{
  "contracts": {
    "contracts/MateriaLiquidityAdder.sol:MateriaLiquidityAdder": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "wrapper",
              "type": "address"
            }
          ],
          "name": "_wrapEth",
          "outputs": [
            {
              "internalType": "address",
              "name": "interoperable",
              "type": "address"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "bridgeAmountDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ethAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "ethAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "name": "onERC1155BatchReceived",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "onERC1155Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "608060405234801561001057600080fd5b506127a3806100206000396000f3fe6080604052600436106100655760003560e01c8063bc197c8111610043578063bc197c81146100e4578063f23a6e6114610111578063f717cd6d1461013157610065565b806301ffc9a71461006a5780639187aaca146100a0578063bb8a88bb146100c2575b600080fd5b34801561007657600080fd5b5061008a610085366004611dc0565b610151565b60405161009791906121ab565b60405180910390f35b3480156100ac57600080fd5b506100c06100bb366004611d38565b610159565b005b6100d56100d0366004611fd0565b61037d565b60405161009793929190612515565b3480156100f057600080fd5b506101046100ff366004611c03565b610749565b60405161009791906121b6565b34801561011d57600080fd5b5061010461012c366004611cbe565b610750565b61014461013f366004611e66565b6107ac565b604051610097919061210c565b60005b919050565b80428110156101835760405162461bcd60e51b815260040161017a906122e5565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff16631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156101cb57600080fd5b505afa1580156101df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102039190611be7565b905060006102118a88610836565b965061021f8a33308c6108dd565b61022a8a8a846109ef565b809a50819250505060006102c0823073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027e57600080fd5b505afa158015610292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b69190611be7565b8c8c8c8c8c610d4a565b505090506000818b6102d291906126d3565b9050801561036f5761036f8473ffffffffffffffffffffffffffffffffffffffff16631bf8ee708e6040518263ffffffff1660e01b8152600401610316919061210c565b60206040518083038186803b15801561032e57600080fd5b505afa158015610342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103669190611e4e565b8d838733610ebc565b505050505050505050505050565b600080600083428110156103a35760405162461bcd60e51b815260040161017a906122e5565b60003073ffffffffffffffffffffffffffffffffffffffff16631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156103eb57600080fd5b505afa1580156103ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104239190611be7565b905060003073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046d57600080fd5b505afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a59190611be7565b905060008273ffffffffffffffffffffffffffffffffffffffff16630c0f6b713073ffffffffffffffffffffffffffffffffffffffff1663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561050b57600080fd5b505afa15801561051f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105439190611e4e565b6040518263ffffffff1660e01b815260040161055f91906124fe565b60206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105af9190611be7565b90506105bf8183348f8f8f610fdc565b90975095506105ce87846107ac565b5060006106593073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561061a57600080fd5b505afa15801561062e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106529190611be7565b83856112ba565b905061066682828a611348565b6106728333838a6108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a627842906106c4908d9060040161210c565b602060405180830381600087803b1580156106de57600080fd5b505af11580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107169190611e4e565b95506000806107258a346126d3565b9150811115610738576107383382611450565b505050505050955095509592505050565b6000806000fd5b600080606061076184860186611eb9565b909250905060018214156100655761077c3388888b856114ef565b5050507ff23a6e610000000000000000000000000000000000000000000000000000000098975050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061082e9190611e95565b949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b69190611e4e565b6108c19060126126d3565b6108cc90600a6125aa565b6108d69083612696565b9392505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161091193929190612154565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161095f9190612052565b6000604051808303816000865af19150503d806000811461099c576040519150601f19603f3d011682016040523d82523d6000602084013e6109a1565b606091505b50915091508180156109cb5750805115806109cb5750808060200190518101906109cb9190611da0565b6109e75760405162461bcd60e51b815260040161017a9061246a565b505050505050565b600080838573ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401610a2e92919061212d565b60206040518083038186803b158015610a4657600080fd5b505afa158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190611e4e565b1015610b4c576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063095ea7b390610af89086907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401612185565b602060405180830381600087803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a9190611da0565b505b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906340c10f1990610ba39089908990600401612185565b6040805180830381600087803b158015610bbc57600080fd5b505af1158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf49190611e95565b506040517f0c0f6b7100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff851690630c0f6b7190610c4a9084906004016124fe565b60206040518083038186803b158015610c6257600080fd5b505afa158015610c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9a9190611be7565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290935073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190610cef90309060040161210c565b60206040518083038186803b158015610d0757600080fd5b505afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f9190611e4e565b915050935093915050565b6000806000610d5d8a8a8a8a8a8a610fdc565b80935081945050506000610def3073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610db057600080fd5b505afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190611be7565b8c8c6112ba565b9050610dfc8b8286611348565b610e088a3383866108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a62784290610e5a90889060040161210c565b602060405180830381600087803b158015610e7457600080fd5b505af1158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190611e4e565b9150509750975097945050505050565b6040517fb390c0ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063b390c0ab90610f109088908790600401612507565b600060405180830381600087803b158015610f2a57600080fd5b505af1158015610f3e573d6000803e3d6000fd5b50505050610fd584828673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f80919061210c565b60206040518083038186803b158015610f9857600080fd5b505afa158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190611e4e565b611348565b5050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561102757600080fd5b505afa15801561103b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105f9190611be7565b6040517fe6a4390500000000000000000000000000000000000000000000000000000000815290915060009073ffffffffffffffffffffffffffffffffffffffff83169063e6a43905906110b9908d908d9060040161212d565b60206040518083038186803b1580156110d157600080fd5b505afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111099190611be7565b73ffffffffffffffffffffffffffffffffffffffff1614156111cd576040517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063c9c6539690611179908c908c9060040161212d565b602060405180830381600087803b15801561119357600080fd5b505af11580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb9190611be7565b505b6000806111db838c8c6117e6565b915091508160001480156111ed575080155b156111fd578894508793506112ac565b600061120a8a84846118f4565b905088811161123e57868110156112335760405162461bcd60e51b815260040161017a90612379565b8995509350836112aa565b600061124b8a84866118f4565b90508a811115611284577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b888110156112a45760405162461bcd60e51b815260040161017a906122ae565b95508894505b505b505050965096945050505050565b60008060006112c98585611956565b915091508582826040516020016112e1929190612018565b6040516020818303038152906040528051906020012060405160200161130892919061208b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161137a929190612185565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516113c89190612052565b6000604051808303816000865af19150503d8060008114611405576040519150601f19603f3d011682016040523d82523d6000602084013e61140a565b606091505b50915091508180156114345750805115806114345750808060200190518101906114349190611da0565b610fd55760405162461bcd60e51b815260040161017a906121e3565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114879190612052565b60006040518083038185875af1925050503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b50509050806114ea5760405162461bcd60e51b815260040161017a906123b0565b505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153a57600080fd5b505afa15801561154e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115729190611be7565b90506000806000808780602001905181019061158e9190611f84565b929a5090985091955090935091506115a582611a21565b6115ae8c611a46565b156115b957896115cb565b6115cb8a670de0b6b3a7640000612696565b99506116668c73ffffffffffffffffffffffffffffffffffffffff16630c0f6b718d6040518263ffffffff1660e01b815260040161160991906124fe565b60206040518083038186803b15801561162157600080fd5b505afa158015611635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116599190611be7565b915081868c878b8b610fdc565b809750819850505060006116f83073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b957600080fd5b505afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f19190611be7565b83886112ba565b905061170582828a611348565b611711868b838a6108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061176390879060040161210c565b602060405180830381600087803b15801561177d57600080fd5b505af1158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190611e4e565b5060006117c2898d6126d3565b9b508b11156117d6576117d6828b8d611348565b5050505050509550959350505050565b60008060006117f58585611956565b5090506000806118068888886112ba565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561184b57600080fd5b505afa15801561185f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118839190611e00565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146118e25780826118e5565b81815b90999098509650505050505050565b60008084116119155760405162461bcd60e51b815260040161017a90612251565b6000831180156119255750600082115b6119415760405162461bcd60e51b815260040161017a9061240d565b8261194c8584611b01565b61082e919061252b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119a55760405162461bcd60e51b815260040161017a9061231c565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106119df5782846119e2565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216611a1a5760405162461bcd60e51b815260040161017a906124c7565b9250929050565b8042811015611a425760405162461bcd60e51b815260040161017a906122e5565b5050565b60008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8e57600080fd5b505afa925050508015611adc575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611ad991810190611e4e565b60015b611ae857506012610154565b80600114611af65780611af9565b60005b915050610154565b6000811580611b2557508282611b178183612696565b9250611b23908361252b565b145b611b415760405162461bcd60e51b815260040161017a9061221a565b92915050565b60008083601f840112611b58578182fd5b50813567ffffffffffffffff811115611b6f578182fd5b6020830191508360208083028501011115611a1a57600080fd5b60008083601f840112611b9a578182fd5b50813567ffffffffffffffff811115611bb1578182fd5b602083019150836020828501011115611a1a57600080fd5b80516dffffffffffffffffffffffffffff8116811461015457600080fd5b600060208284031215611bf8578081fd5b81516108d681612748565b60008060008060008060008060a0898b031215611c1e578384fd5b8835611c2981612748565b97506020890135611c3981612748565b9650604089013567ffffffffffffffff80821115611c55578586fd5b611c618c838d01611b47565b909850965060608b0135915080821115611c79578586fd5b611c858c838d01611b47565b909650945060808b0135915080821115611c9d578384fd5b50611caa8b828c01611b89565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611cd6578182fd5b8635611ce181612748565b95506020870135611cf181612748565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d1a578283fd5b611d2689828a01611b89565b979a9699509497509295939492505050565b600080600080600080600060e0888a031215611d52578283fd5b8735611d5d81612748565b96506020880135955060408801359450606088013593506080880135925060a0880135611d8981612748565b8092505060c0880135905092959891949750929550565b600060208284031215611db1578081fd5b815180151581146108d6578182fd5b600060208284031215611dd1578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108d6578182fd5b600080600060608486031215611e14578081fd5b611e1d84611bc9565b9250611e2b60208501611bc9565b9150604084015163ffffffff81168114611e43578182fd5b809150509250925092565b600060208284031215611e5f578081fd5b5051919050565b60008060408385031215611e78578182fd5b823591506020830135611e8a81612748565b809150509250929050565b60008060408385031215611ea7578182fd5b825191506020830151611e8a81612748565b60008060408385031215611ecb578182fd5b8235915060208084013567ffffffffffffffff80821115611eea578384fd5b818601915086601f830112611efd578384fd5b813581811115611f0f57611f0f612719565b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715611f5057611f50612719565b6040528181528382018501891015611f66578586fd5b81858501868301378585838301015280955050505050509250929050565b600080600080600060a08688031215611f9b578283fd5b8551945060208601519350604086015192506060860151611fbb81612748565b80925050608086015190509295509295909350565b600080600080600060a08688031215611fe7578283fd5b853594506020860135935060408601359250606086013561200781612748565b949793965091946080013592915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b818110156120725760208186018101518583015201612058565b818111156120805782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f494e53554646494349454e545f415f414d4f554e540000000000000000000000604082015260600190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f494e53554646494349454e545f425f414d4f554e540000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b60008261255f577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b80825b600180861161257657506125a1565b818704821115612588576125886126ea565b8086161561259557918102915b9490941c938002612567565b94509492505050565b60006108d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846000826125e1575060016108d6565b816125ee575060006108d6565b8160018114612604576002811461260e5761263b565b60019150506108d6565b60ff84111561261f5761261f6126ea565b6001841b915084821115612635576126356126ea565b506108d6565b5060208310610133831016604e8410600b841016171561266e575081810a83811115612669576126696126ea565b6108d6565b61267b8484846001612564565b80860482111561268d5761268d6126ea565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126ce576126ce6126ea565b500290565b6000828210156126e5576126e56126ea565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461276a57600080fd5b5056fea2646970667358221220a7c0abbdb43a4bc7322710ea0e0a70c0959358d259060d46ed5bbdfe1dbc196f64736f6c63430008000033",
          "sourceMap": "381:7397:0:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "object": "6080604052600436106100655760003560e01c8063bc197c8111610043578063bc197c81146100e4578063f23a6e6114610111578063f717cd6d1461013157610065565b806301ffc9a71461006a5780639187aaca146100a0578063bb8a88bb146100c2575b600080fd5b34801561007657600080fd5b5061008a610085366004611dc0565b610151565b60405161009791906121ab565b60405180910390f35b3480156100ac57600080fd5b506100c06100bb366004611d38565b610159565b005b6100d56100d0366004611fd0565b61037d565b60405161009793929190612515565b3480156100f057600080fd5b506101046100ff366004611c03565b610749565b60405161009791906121b6565b34801561011d57600080fd5b5061010461012c366004611cbe565b610750565b61014461013f366004611e66565b6107ac565b604051610097919061210c565b60005b919050565b80428110156101835760405162461bcd60e51b815260040161017a906122e5565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff16631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156101cb57600080fd5b505afa1580156101df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102039190611be7565b905060006102118a88610836565b965061021f8a33308c6108dd565b61022a8a8a846109ef565b809a50819250505060006102c0823073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027e57600080fd5b505afa158015610292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b69190611be7565b8c8c8c8c8c610d4a565b505090506000818b6102d291906126d3565b9050801561036f5761036f8473ffffffffffffffffffffffffffffffffffffffff16631bf8ee708e6040518263ffffffff1660e01b8152600401610316919061210c565b60206040518083038186803b15801561032e57600080fd5b505afa158015610342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103669190611e4e565b8d838733610ebc565b505050505050505050505050565b600080600083428110156103a35760405162461bcd60e51b815260040161017a906122e5565b60003073ffffffffffffffffffffffffffffffffffffffff16631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156103eb57600080fd5b505afa1580156103ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104239190611be7565b905060003073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046d57600080fd5b505afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a59190611be7565b905060008273ffffffffffffffffffffffffffffffffffffffff16630c0f6b713073ffffffffffffffffffffffffffffffffffffffff1663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561050b57600080fd5b505afa15801561051f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105439190611e4e565b6040518263ffffffff1660e01b815260040161055f91906124fe565b60206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105af9190611be7565b90506105bf8183348f8f8f610fdc565b90975095506105ce87846107ac565b5060006106593073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561061a57600080fd5b505afa15801561062e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106529190611be7565b83856112ba565b905061066682828a611348565b6106728333838a6108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a627842906106c4908d9060040161210c565b602060405180830381600087803b1580156106de57600080fd5b505af11580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107169190611e4e565b95506000806107258a346126d3565b9150811115610738576107383382611450565b505050505050955095509592505050565b6000806000fd5b600080606061076184860186611eb9565b909250905060018214156100655761077c3388888b856114ef565b5050507ff23a6e610000000000000000000000000000000000000000000000000000000098975050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061082e9190611e95565b949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b69190611e4e565b6108c19060126126d3565b6108cc90600a6125aa565b6108d69083612696565b9392505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161091193929190612154565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161095f9190612052565b6000604051808303816000865af19150503d806000811461099c576040519150601f19603f3d011682016040523d82523d6000602084013e6109a1565b606091505b50915091508180156109cb5750805115806109cb5750808060200190518101906109cb9190611da0565b6109e75760405162461bcd60e51b815260040161017a9061246a565b505050505050565b600080838573ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401610a2e92919061212d565b60206040518083038186803b158015610a4657600080fd5b505afa158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190611e4e565b1015610b4c576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063095ea7b390610af89086907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401612185565b602060405180830381600087803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a9190611da0565b505b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906340c10f1990610ba39089908990600401612185565b6040805180830381600087803b158015610bbc57600080fd5b505af1158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf49190611e95565b506040517f0c0f6b7100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff851690630c0f6b7190610c4a9084906004016124fe565b60206040518083038186803b158015610c6257600080fd5b505afa158015610c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9a9190611be7565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290935073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190610cef90309060040161210c565b60206040518083038186803b158015610d0757600080fd5b505afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f9190611e4e565b915050935093915050565b6000806000610d5d8a8a8a8a8a8a610fdc565b80935081945050506000610def3073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610db057600080fd5b505afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190611be7565b8c8c6112ba565b9050610dfc8b8286611348565b610e088a3383866108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a62784290610e5a90889060040161210c565b602060405180830381600087803b158015610e7457600080fd5b505af1158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190611e4e565b9150509750975097945050505050565b6040517fb390c0ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063b390c0ab90610f109088908790600401612507565b600060405180830381600087803b158015610f2a57600080fd5b505af1158015610f3e573d6000803e3d6000fd5b50505050610fd584828673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f80919061210c565b60206040518083038186803b158015610f9857600080fd5b505afa158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190611e4e565b611348565b5050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561102757600080fd5b505afa15801561103b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105f9190611be7565b6040517fe6a4390500000000000000000000000000000000000000000000000000000000815290915060009073ffffffffffffffffffffffffffffffffffffffff83169063e6a43905906110b9908d908d9060040161212d565b60206040518083038186803b1580156110d157600080fd5b505afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111099190611be7565b73ffffffffffffffffffffffffffffffffffffffff1614156111cd576040517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063c9c6539690611179908c908c9060040161212d565b602060405180830381600087803b15801561119357600080fd5b505af11580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb9190611be7565b505b6000806111db838c8c6117e6565b915091508160001480156111ed575080155b156111fd578894508793506112ac565b600061120a8a84846118f4565b905088811161123e57868110156112335760405162461bcd60e51b815260040161017a90612379565b8995509350836112aa565b600061124b8a84866118f4565b90508a811115611284577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b888110156112a45760405162461bcd60e51b815260040161017a906122ae565b95508894505b505b505050965096945050505050565b60008060006112c98585611956565b915091508582826040516020016112e1929190612018565b6040516020818303038152906040528051906020012060405160200161130892919061208b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161137a929190612185565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516113c89190612052565b6000604051808303816000865af19150503d8060008114611405576040519150601f19603f3d011682016040523d82523d6000602084013e61140a565b606091505b50915091508180156114345750805115806114345750808060200190518101906114349190611da0565b610fd55760405162461bcd60e51b815260040161017a906121e3565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114879190612052565b60006040518083038185875af1925050503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b50509050806114ea5760405162461bcd60e51b815260040161017a906123b0565b505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153a57600080fd5b505afa15801561154e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115729190611be7565b90506000806000808780602001905181019061158e9190611f84565b929a5090985091955090935091506115a582611a21565b6115ae8c611a46565b156115b957896115cb565b6115cb8a670de0b6b3a7640000612696565b99506116668c73ffffffffffffffffffffffffffffffffffffffff16630c0f6b718d6040518263ffffffff1660e01b815260040161160991906124fe565b60206040518083038186803b15801561162157600080fd5b505afa158015611635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116599190611be7565b915081868c878b8b610fdc565b809750819850505060006116f83073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b957600080fd5b505afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f19190611be7565b83886112ba565b905061170582828a611348565b611711868b838a6108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061176390879060040161210c565b602060405180830381600087803b15801561177d57600080fd5b505af1158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190611e4e565b5060006117c2898d6126d3565b9b508b11156117d6576117d6828b8d611348565b5050505050509550959350505050565b60008060006117f58585611956565b5090506000806118068888886112ba565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561184b57600080fd5b505afa15801561185f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118839190611e00565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146118e25780826118e5565b81815b90999098509650505050505050565b60008084116119155760405162461bcd60e51b815260040161017a90612251565b6000831180156119255750600082115b6119415760405162461bcd60e51b815260040161017a9061240d565b8261194c8584611b01565b61082e919061252b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119a55760405162461bcd60e51b815260040161017a9061231c565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106119df5782846119e2565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216611a1a5760405162461bcd60e51b815260040161017a906124c7565b9250929050565b8042811015611a425760405162461bcd60e51b815260040161017a906122e5565b5050565b60008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8e57600080fd5b505afa925050508015611adc575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611ad991810190611e4e565b60015b611ae857506012610154565b80600114611af65780611af9565b60005b915050610154565b6000811580611b2557508282611b178183612696565b9250611b23908361252b565b145b611b415760405162461bcd60e51b815260040161017a9061221a565b92915050565b60008083601f840112611b58578182fd5b50813567ffffffffffffffff811115611b6f578182fd5b6020830191508360208083028501011115611a1a57600080fd5b60008083601f840112611b9a578182fd5b50813567ffffffffffffffff811115611bb1578182fd5b602083019150836020828501011115611a1a57600080fd5b80516dffffffffffffffffffffffffffff8116811461015457600080fd5b600060208284031215611bf8578081fd5b81516108d681612748565b60008060008060008060008060a0898b031215611c1e578384fd5b8835611c2981612748565b97506020890135611c3981612748565b9650604089013567ffffffffffffffff80821115611c55578586fd5b611c618c838d01611b47565b909850965060608b0135915080821115611c79578586fd5b611c858c838d01611b47565b909650945060808b0135915080821115611c9d578384fd5b50611caa8b828c01611b89565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611cd6578182fd5b8635611ce181612748565b95506020870135611cf181612748565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d1a578283fd5b611d2689828a01611b89565b979a9699509497509295939492505050565b600080600080600080600060e0888a031215611d52578283fd5b8735611d5d81612748565b96506020880135955060408801359450606088013593506080880135925060a0880135611d8981612748565b8092505060c0880135905092959891949750929550565b600060208284031215611db1578081fd5b815180151581146108d6578182fd5b600060208284031215611dd1578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108d6578182fd5b600080600060608486031215611e14578081fd5b611e1d84611bc9565b9250611e2b60208501611bc9565b9150604084015163ffffffff81168114611e43578182fd5b809150509250925092565b600060208284031215611e5f578081fd5b5051919050565b60008060408385031215611e78578182fd5b823591506020830135611e8a81612748565b809150509250929050565b60008060408385031215611ea7578182fd5b825191506020830151611e8a81612748565b60008060408385031215611ecb578182fd5b8235915060208084013567ffffffffffffffff80821115611eea578384fd5b818601915086601f830112611efd578384fd5b813581811115611f0f57611f0f612719565b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715611f5057611f50612719565b6040528181528382018501891015611f66578586fd5b81858501868301378585838301015280955050505050509250929050565b600080600080600060a08688031215611f9b578283fd5b8551945060208601519350604086015192506060860151611fbb81612748565b80925050608086015190509295509295909350565b600080600080600060a08688031215611fe7578283fd5b853594506020860135935060408601359250606086013561200781612748565b949793965091946080013592915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b818110156120725760208186018101518583015201612058565b818111156120805782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f494e53554646494349454e545f415f414d4f554e540000000000000000000000604082015260600190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f494e53554646494349454e545f425f414d4f554e540000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b60008261255f577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b80825b600180861161257657506125a1565b818704821115612588576125886126ea565b8086161561259557918102915b9490941c938002612567565b94509492505050565b60006108d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846000826125e1575060016108d6565b816125ee575060006108d6565b8160018114612604576002811461260e5761263b565b60019150506108d6565b60ff84111561261f5761261f6126ea565b6001841b915084821115612635576126356126ea565b506108d6565b5060208310610133831016604e8410600b841016171561266e575081810a83811115612669576126696126ea565b6108d6565b61267b8484846001612564565b80860482111561268d5761268d6126ea565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126ce576126ce6126ea565b500290565b6000828210156126e5576126e56126ea565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461276a57600080fd5b5056fea2646970667358221220a7c0abbdb43a4bc7322710ea0e0a70c0959358d259060d46ed5bbdfe1dbc196f64736f6c63430008000033",
          "sourceMap": "381:7397:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7676:100;;;;;;;;;;-1:-1:-1;7676:100:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2837:1171;;;;;;;;;;-1:-1:-1;2837:1171:0;;;;;:::i;:::-;;:::i;:::-;;4014:1487;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;7455:215::-;;;;;;;;;;-1:-1:-1;7455:215:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6967:482::-;;;;;;;;;;-1:-1:-1;6967:482:0;;;;;:::i;:::-;;:::i;1992:184:2:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7676:100:0:-;7741:4;7676:100;;;;:::o;2837:1171::-;3086:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;;;;;;;;;3106:20:0::1;3166:4;3137:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3106:82;;3198:21;3247:36;3261:5;3268:14;3247:13;:36::i;:::-;3230:53;;3294:85;3326:5;3333:10;3353:4;3360:18;3294:31;:85::i;:::-;3427:51;3438:5;3445:18;3465:12;3427:10;:51::i;:::-;3389:89;;;;;;;;3490:19;3529:294;3562:13;3630:4;3601:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3669:18;3705:19;3742:14;3774:15;3807:2;3529:15;:294::i;:::-;3489:334;;;;3834:12;3870:11;3849:18;:32;;;;:::i;:::-;3834:47:::0;-1:-1:-1;3895:8:0;;3891:110:::1;;3905:96;3934:12;3918:36;;;3955:5;3918:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3963:5;3970:4;3976:12;3990:10;3905:12;:96::i;:::-;500:1:2;;;;2837:1171:0::0;;;;;;;;:::o;4014:1487::-;4277:17;4308:20;4342:17;4237:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;4384:20:0::1;4444:4;4415:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4384:82;;4476:19;4535:4;4506:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4476:80;;4567:12;4635;4619:45;;;4723:4;4694:54;;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4619:150;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4567:216;;4822:177;4849:4;4867:11;4892:9;4915:19;4948:12;4974:15;4822:13;:177::i;:::-;4794:205:::0;;-1:-1:-1;4794:205:0;-1:-1:-1;5010:33:0::1;4794:205:::0;5030:12;5010:8:::1;:33::i;:::-;;5054:12;5081:97;5141:4;5112:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5160:4;5166:11;5081:22;:97::i;:::-;5054:124;;5188:50;5216:4;5222;5228:9;5188:27;:50::i;:::-;5248:76;5280:11;5293:10;5305:4;5311:12;5248:31;:76::i;:::-;5346:27;::::0;;;;:23:::1;::::0;::::1;::::0;::::1;::::0;:27:::1;::::0;5370:2;;5346:27:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5334:39:::0;-1:-1:-1;5384:12:0::1;::::0;5418:21:::1;5430:9:::0;5418::::1;:21;:::i;:::-;5411:28;;;5410:34;5406:88;;;5446:48;5477:10;5489:4;5446:30;:48::i;:::-;500:1:2;;;;;4014:1487:0::0;;;;;;;;;;:::o;7455:215::-;7637:6;7655:8;;;6967:482;7136:6;;7181:20;7235:34;;;;7246:4;7235:34;:::i;:::-;7212:57;;-1:-1:-1;7212:57:0;-1:-1:-1;7297:1:0;7284:14;;7280:113;;;7314:54;7331:10;7343:2;7347:5;7354:4;7360:7;7314:16;:54::i;:::-;;;-1:-1:-1;7411:31:0;;6967:482;-1:-1:-1;;;;;;;;6967:482:0:o;1992:184:2:-;2067:21;2136:7;2120:32;;;2160:6;2120:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2100:69;1992:184;-1:-1:-1;;;;1992:184:2:o;2182:175::-;2259:17;2331:5;2320:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2315:33;;:2;:33;:::i;:::-;2310:39;;:2;:39;:::i;:::-;2300:50;;:6;:50;:::i;:::-;2288:62;2182:175;-1:-1:-1;;;2182:175:2:o;1001:439:36:-;1219:12;1233:17;1254:5;:10;;1288;1300:4;1306:2;1310:5;1265:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1254:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:99;;;;1335:7;:57;;;;-1:-1:-1;1347:11:36;;:16;;:44;;;1378:4;1367:24;;;;;;;;;;;;:::i;:::-;1327:106;;;;-1:-1:-1;;;1327:106:36;;;;;;;:::i;:::-;1001:439;;;;;;:::o;907:529:2:-;1023:21;1046:17;1129:6;1086:5;1079:23;;;1111:4;1118:7;1079:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;1075:136;;;1151:49;;;;;:21;;;;;;:49;;1173:7;;1182:17;;1151:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1075:136;1238:44;;;;;1222:10;;1238:29;;;;;;:44;;1268:5;;1275:6;;1238:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1336:44:2;;;;;1221:61;;-1:-1:-1;1336:40:2;;;;;;:44;;1221:61;;1336:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1305:124;;;;;1312:69;;-1:-1:-1;1305:87:2;;;;;;:124;;1414:4;;1305:124;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1293:136;;907:529;;;;;;;:::o;1875:956:0:-;2162:19;2195:20;2229:17;2301:189;2328:5;2347:11;2372:18;2404:19;2437:14;2465:15;2301:13;:189::i;:::-;2271:219;;;;;;;;2501:12;2528:98;2588:4;2559:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2607:5;2614:11;2528:22;:98::i;:::-;2501:125;;2636:53;2664:5;2671:4;2677:11;2636:27;:53::i;:::-;2699:76;2731:11;2744:10;2756:4;2762:12;2699:31;:76::i;:::-;2797:27;;;;;:23;;;;;;:27;;2821:2;;2797:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2785:39;;1875:956;;;;;;;;;;;;:::o;1442:304:2:-;1604:41;;;;;:29;;;;;;:41;;1634:2;;1638:6;;1604:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1655:84;1683:8;1693:2;1704:8;1697:26;;;1732:4;1697:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1655:27;:84::i;:::-;1442:304;;;;;:::o;437:1432:0:-;651:15;668;695;750:4;721:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;833:48;;;;;695:72;;-1:-1:-1;893:1:0;;833:62;:32;;;;;:48;;866:6;;874;;833:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;829:144;;;911:51;;;;;:35;;;;;;:51;;947:6;;955;;911:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;829:144;983:16;1001;1021:60;1056:7;1066:6;1074;1021:26;:60::i;:::-;982:99;;;;1095:8;1107:1;1095:13;:30;;;;-1:-1:-1;1112:13:0;;1095:30;1091:772;;;1163:14;;-1:-1:-1;1179:14:0;;-1:-1:-1;1091:772:0;;;1225:22;1250:56;1271:14;1287:8;1297;1250:20;:56::i;:::-;1225:81;;1342:14;1324;:32;1320:533;;1402:10;1384:14;:28;;1376:62;;;;-1:-1:-1;;;1376:62:0;;;;;;;:::i;:::-;1478:14;;-1:-1:-1;1494:14:0;-1:-1:-1;1494:14:0;1320:533;;;1548:22;1573:56;1594:14;1610:8;1620;1573:20;:56::i;:::-;1548:81;;1672:14;1654;:32;;1647:40;;;;;;;;;;;;1731:10;1713:14;:28;;1705:62;;;;-1:-1:-1;;;1705:62:0;;;;;;;:::i;:::-;1807:14;-1:-1:-1;1823:14:0;;-1:-1:-1;1320:533:0;1091:772;;437:1432;;;;;;;;;;;;:::o;764:708:32:-;883:12;908:14;924;942:26;953:6;961;942:10;:26::i;:::-;907:61;;;;1178:7;1242:6;1250;1225:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1215:43;;;;;;1095:306;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1060:363;;1095:306;1060:363;;;;;764:708;-1:-1:-1;;;;;;764:708:32:o;605:390:36:-;785:12;799:17;820:5;:10;;854;866:2;870:5;831:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:93;;;;895:7;:57;;;;-1:-1:-1;907:11:36;;:16;;:44;;;938:4;927:24;;;;;;;;;;;;:::i;:::-;887:101;;;;-1:-1:-1;;;887:101:36;;;;;;;:::i;1446:197::-;1558:12;;;1518;1558;;;;;;;;;1536:7;;;;1551:5;;1536:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:54;;;1589:7;1581:55;;;;-1:-1:-1;;;1581:55:36;;;;;;;:::i;:::-;1446:197;;;:::o;5507:1450:0:-;5683:18;5703:20;5735:19;5794:4;5765:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5735:80;;5826:27;5863:10;5883:16;5909:13;6021:7;5997:100;;;;;;;;;;;;:::i;:::-;5933:164;;-1:-1:-1;5933:164:0;;-1:-1:-1;5933:164:0;;-1:-1:-1;5933:164:0;;-1:-1:-1;5933:164:0;-1:-1:-1;6108:17:0;5933:164;6108:7;:17::i;:::-;6144:31;6164:10;6144:19;:31::i;:::-;:36;:61;;6200:5;6144:61;;;6183:14;:5;6191:6;6183:14;:::i;:::-;6136:69;;6245:240;6311:10;6289:49;;;6339:6;6289:57;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6273:74;;;6362:11;6387:5;6406:19;6439:10;6463:12;6245:13;:240::i;:::-;6216:269;;;;;;;;6504:12;6531:98;6591:4;6562:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6610:5;6617:11;6531:22;:98::i;:::-;6504:125;;6639:52;6667:5;6674:4;6680:10;6639:27;:52::i;:::-;6701:70;6733:11;6746:4;6752;6758:12;6701:31;:70::i;:::-;6781:27;;;;;:23;;;;;;:27;;6805:2;;6781:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6900:1:0;6878:18;6886:10;6878:5;:18;:::i;:::-;6870:26;;;6869:32;6865:85;;;6903:47;6931:5;6938:4;6944:5;6903:27;:47::i;:::-;5507:1450;;;;;;;;;;;;;;:::o;1527:429:32:-;1650:16;1668;1697:14;1717:26;1728:6;1736;1717:10;:26::i;:::-;1696:47;;;1754:16;1772;1807:32;1815:7;1824:6;1832;1807:7;:32::i;:::-;1794:58;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1753:101;;;;;;;;;1897:6;1887:16;;:6;:16;;;:62;;1930:8;1940;1887:62;;;1907:8;1917;1887:62;1864:85;;;;-1:-1:-1;1527:429:32;-1:-1:-1;;;;;;;1527:429:32:o;2066:355::-;2187:15;2232:1;2222:7;:11;2214:59;;;;-1:-1:-1;;;2214:59:32;;;;;;;:::i;:::-;2302:1;2291:8;:12;:28;;;;;2318:1;2307:8;:12;2291:28;2283:79;;;;-1:-1:-1;;;2283:79:32;;;;;;;:::i;:::-;2406:8;2382:21;:7;2394:8;2382:11;:21::i;:::-;:32;;;;:::i;334:341::-;409:14;425;469:6;459:16;;:6;:16;;;;451:64;;;;-1:-1:-1;;;451:64:32;;;;;;;:::i;:::-;553:6;544:15;;:6;:15;;;:53;;582:6;590;544:53;;;563:6;571;544:53;525:72;;-1:-1:-1;525:72:32;-1:-1:-1;615:20:32;;;607:61;;;;-1:-1:-1;;;607:61:32;;;;;;;:::i;:::-;334:341;;;;;:::o;514:63:2:-;565:8;454:15;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;514:63;;:::o;2909:290::-;3005:7;3042:10;3032:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:32:2;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;3028:165;;-1:-1:-1;3180:2:2;3173:9;;3028:165;3113:8;3125:1;3113:13;:28;;3133:8;3113:28;;;3129:1;3113:28;3106:35;;;;;458:140:35;510:6;536;;;:30;;-1:-1:-1;565:1:35;560;551:5;560:1;565;551:5;:::i;:::-;547:9;-1:-1:-1;546:15:35;;547:9;546:15;:::i;:::-;:20;536:30;528:63;;;;-1:-1:-1;;;528:63:35;;;;;;;:::i;:::-;458:140;;;;:::o;14:404:38:-;;;147:3;140:4;132:6;128:17;124:27;114:2;;172:8;162;155:26;114:2;-1:-1:-1;202:20:38;;245:18;234:30;;231:2;;;284:8;274;267:26;231:2;328:4;320:6;316:17;304:29;;391:3;384:4;376;368:6;364:17;356:6;352:30;348:41;345:50;342:2;;;408:1;405;398:12;423:377;;;540:3;533:4;525:6;521:17;517:27;507:2;;565:8;555;548:26;507:2;-1:-1:-1;595:20:38;;638:18;627:30;;624:2;;;677:8;667;660:26;624:2;721:4;713:6;709:17;697:29;;773:3;766:4;757:6;749;745:19;741:30;738:39;735:2;;;790:1;787;780:12;805:190;886:13;;939:30;928:42;;918:53;;908:2;;985:1;982;975:12;1000:263;;1123:2;1111:9;1102:7;1098:23;1094:32;1091:2;;;1144:6;1136;1129:22;1091:2;1181:9;1175:16;1200:33;1227:5;1200:33;:::i;1268:1396::-;;;;;;;;;1537:3;1525:9;1516:7;1512:23;1508:33;1505:2;;;1559:6;1551;1544:22;1505:2;1603:9;1590:23;1622:33;1649:5;1622:33;:::i;:::-;1674:5;-1:-1:-1;1731:2:38;1716:18;;1703:32;1744:35;1703:32;1744:35;:::i;:::-;1798:7;-1:-1:-1;1856:2:38;1841:18;;1828:32;1879:18;1909:14;;;1906:2;;;1941:6;1933;1926:22;1906:2;1985:76;2053:7;2044:6;2033:9;2029:22;1985:76;:::i;:::-;2080:8;;-1:-1:-1;1959:102:38;-1:-1:-1;2168:2:38;2153:18;;2140:32;;-1:-1:-1;2184:16:38;;;2181:2;;;2218:6;2210;2203:22;2181:2;2262:78;2332:7;2321:8;2310:9;2306:24;2262:78;:::i;:::-;2359:8;;-1:-1:-1;2236:104:38;-1:-1:-1;2447:3:38;2432:19;;2419:33;;-1:-1:-1;2464:16:38;;;2461:2;;;2498:6;2490;2483:22;2461:2;;2542:62;2596:7;2585:8;2574:9;2570:24;2542:62;:::i;:::-;1495:1169;;;;-1:-1:-1;1495:1169:38;;-1:-1:-1;1495:1169:38;;;;;;2623:8;-1:-1:-1;;;1495:1169:38:o;2669:849::-;;;;;;;2868:3;2856:9;2847:7;2843:23;2839:33;2836:2;;;2890:6;2882;2875:22;2836:2;2934:9;2921:23;2953:33;2980:5;2953:33;:::i;:::-;3005:5;-1:-1:-1;3062:2:38;3047:18;;3034:32;3075:35;3034:32;3075:35;:::i;:::-;3129:7;-1:-1:-1;3183:2:38;3168:18;;3155:32;;-1:-1:-1;3234:2:38;3219:18;;3206:32;;-1:-1:-1;3289:3:38;3274:19;;3261:33;3317:18;3306:30;;3303:2;;;3354:6;3346;3339:22;3303:2;3398:60;3450:7;3441:6;3430:9;3426:22;3398:60;:::i;:::-;2826:692;;;;-1:-1:-1;2826:692:38;;-1:-1:-1;2826:692:38;;3477:8;;2826:692;-1:-1:-1;;;2826:692:38:o;3523:746::-;;;;;;;;3737:3;3725:9;3716:7;3712:23;3708:33;3705:2;;;3759:6;3751;3744:22;3705:2;3803:9;3790:23;3822:33;3849:5;3822:33;:::i;:::-;3874:5;-1:-1:-1;3926:2:38;3911:18;;3898:32;;-1:-1:-1;3977:2:38;3962:18;;3949:32;;-1:-1:-1;4028:2:38;4013:18;;4000:32;;-1:-1:-1;4079:3:38;4064:19;;4051:33;;-1:-1:-1;4136:3:38;4121:19;;4108:33;4150:35;4108:33;4150:35;:::i;:::-;4204:7;4194:17;;;4258:3;4247:9;4243:19;4230:33;4220:43;;3695:574;;;;;;;;;;:::o;4274:297::-;;4394:2;4382:9;4373:7;4369:23;4365:32;4362:2;;;4415:6;4407;4400:22;4362:2;4452:9;4446:16;4505:5;4498:13;4491:21;4484:5;4481:32;4471:2;;4532:6;4524;4517:22;4576:352;;4687:2;4675:9;4666:7;4662:23;4658:32;4655:2;;;4708:6;4700;4693:22;4655:2;4752:9;4739:23;4802:66;4795:5;4791:78;4784:5;4781:89;4771:2;;4889:6;4881;4874:22;6107:474;;;;6263:2;6251:9;6242:7;6238:23;6234:32;6231:2;;;6284:6;6276;6269:22;6231:2;6312:42;6344:9;6312:42;:::i;:::-;6302:52;;6373:51;6420:2;6409:9;6405:18;6373:51;:::i;:::-;6363:61;;6467:2;6456:9;6452:18;6446:25;6511:10;6504:5;6500:22;6493:5;6490:33;6480:2;;6542:6;6534;6527:22;6480:2;6570:5;6560:15;;;6221:360;;;;;:::o;6586:194::-;;6709:2;6697:9;6688:7;6684:23;6680:32;6677:2;;;6730:6;6722;6715:22;6677:2;-1:-1:-1;6758:16:38;;6667:113;-1:-1:-1;6667:113:38:o;6785:327::-;;;6914:2;6902:9;6893:7;6889:23;6885:32;6882:2;;;6935:6;6927;6920:22;6882:2;6976:9;6963:23;6953:33;;7036:2;7025:9;7021:18;7008:32;7049:33;7076:5;7049:33;:::i;:::-;7101:5;7091:15;;;6872:240;;;;;:::o;7117:324::-;;;7257:2;7245:9;7236:7;7232:23;7228:32;7225:2;;;7278:6;7270;7263:22;7225:2;7312:9;7306:16;7296:26;;7365:2;7354:9;7350:18;7344:25;7378:33;7405:5;7378:33;:::i;7446:1084::-;;;7584:2;7572:9;7563:7;7559:23;7555:32;7552:2;;;7605:6;7597;7590:22;7552:2;7646:9;7633:23;7623:33;;7675:2;7728;7717:9;7713:18;7700:32;7751:18;7792:2;7784:6;7781:14;7778:2;;;7813:6;7805;7798:22;7778:2;7856:6;7845:9;7841:22;7831:32;;7901:7;7894:4;7890:2;7886:13;7882:27;7872:2;;7928:6;7920;7913:22;7872:2;7969;7956:16;7991:2;7987;7984:10;7981:2;;;7997:18;;:::i;:::-;8046:2;8040:9;8181:2;8111:66;8104:4;8100:2;8096:13;8092:86;8084:6;8080:99;8076:108;8234:6;8222:10;8219:22;8214:2;8202:10;8199:18;8196:46;8193:2;;;8245:18;;:::i;:::-;8281:2;8274:22;8305:18;;;8342:11;;;8338:20;;8335:33;-1:-1:-1;8332:2:38;;;8386:6;8378;8371:22;8332:2;8447;8442;8438;8434:11;8429:2;8421:6;8417:15;8404:46;8492:6;8487:2;8482;8474:6;8470:15;8466:24;8459:40;8518:6;8508:16;;;;;;;7542:988;;;;;:::o;8535:517::-;;;;;;8734:3;8722:9;8713:7;8709:23;8705:33;8702:2;;;8756:6;8748;8741:22;8702:2;8790:9;8784:16;8774:26;;8840:2;8829:9;8825:18;8819:25;8809:35;;8884:2;8873:9;8869:18;8863:25;8853:35;;8931:2;8920:9;8916:18;8910:25;8944:33;8971:5;8944:33;:::i;:::-;8996:5;8986:15;;;9041:3;9030:9;9026:19;9020:26;9010:36;;8692:360;;;;;;;;:::o;9057:533::-;;;;;;9237:3;9225:9;9216:7;9212:23;9208:33;9205:2;;;9259:6;9251;9244:22;9205:2;9300:9;9287:23;9277:33;;9357:2;9346:9;9342:18;9329:32;9319:42;;9408:2;9397:9;9393:18;9380:32;9370:42;;9462:2;9451:9;9447:18;9434:32;9475:33;9502:5;9475:33;:::i;:::-;9195:395;;;;-1:-1:-1;9195:395:38;;9579:3;9564:19;9551:33;;9195:395;-1:-1:-1;;9195:395:38:o;9595:368::-;9762:66;9857:2;9853:15;;;9849:24;;9837:37;;9908:15;;;;9904:24;9899:2;9890:12;;9883:46;9954:2;9945:12;;9742:221::o;9968:430::-;;10135:6;10129:13;10160:3;10172:129;10186:6;10183:1;10180:13;10172:129;;;10284:4;10268:14;;;10264:25;;10258:32;10245:11;;;10238:53;10201:12;10172:129;;;10319:6;10316:1;10313:13;10310:2;;;10354:3;10345:6;10340:3;10336:16;10329:29;10310:2;-1:-1:-1;10376:16:38;;;;;10105:293;-1:-1:-1;;10105:293:38:o;10403:724::-;10774:66;10762:79;;10878:2;10874:15;;;;10891:66;10870:88;10866:1;10857:11;;10850:109;10984:2;10975:12;;10968:28;11026:66;11021:2;11012:12;;11005:88;11118:2;11109:12;;10752:375::o;11132:226::-;11308:42;11296:55;;;;11278:74;;11266:2;11251:18;;11233:125::o;11363:327::-;11547:42;11616:15;;;11598:34;;11668:15;;11663:2;11648:18;;11641:43;11525:2;11510:18;;11492:198::o;11695:398::-;11907:42;11976:15;;;11958:34;;12028:15;;;;12023:2;12008:18;;12001:43;12075:2;12060:18;;12053:34;;;;11885:2;11870:18;;11852:241::o;12098:297::-;12302:42;12290:55;;;;12272:74;;12377:2;12362:18;;12355:34;12260:2;12245:18;;12227:168::o;12400:187::-;12565:14;;12558:22;12540:41;;12528:2;12513:18;;12495:92::o;12592:248::-;12766:66;12754:79;;;;12736:98;;12724:2;12709:18;;12691:149::o;12845:355::-;13047:2;13029:21;;;13086:2;13066:18;;;13059:30;13125:33;13120:2;13105:18;;13098:61;13191:2;13176:18;;13019:181::o;13205:344::-;13407:2;13389:21;;;13446:2;13426:18;;;13419:30;13485:22;13480:2;13465:18;;13458:50;13540:2;13525:18;;13379:170::o;13554:399::-;13756:2;13738:21;;;13795:2;13775:18;;;13768:30;13834:34;13829:2;13814:18;;13807:62;13905:5;13900:2;13885:18;;13878:33;13943:3;13928:19;;13728:225::o;13958:345::-;14160:2;14142:21;;;14199:2;14179:18;;;14172:30;14238:23;14233:2;14218:18;;14211:51;14294:2;14279:18;;14132:171::o;14308:340::-;14510:2;14492:21;;;14549:2;14529:18;;;14522:30;14588:18;14583:2;14568:18;;14561:46;14639:2;14624:18;;14482:166::o;14653:399::-;14855:2;14837:21;;;14894:2;14874:18;;;14867:30;14933:34;14928:2;14913:18;;14906:62;15004:5;14999:2;14984:18;;14977:33;15042:3;15027:19;;14827:225::o;15057:345::-;15259:2;15241:21;;;15298:2;15278:18;;;15271:30;15337:23;15332:2;15317:18;;15310:51;15393:2;15378:18;;15231:171::o;15407:399::-;15609:2;15591:21;;;15648:2;15628:18;;;15621:30;15687:34;15682:2;15667:18;;15660:62;15758:5;15753:2;15738:18;;15731:33;15796:3;15781:19;;15581:225::o;15811:402::-;16013:2;15995:21;;;16052:2;16032:18;;;16025:30;16091:34;16086:2;16071:18;;16064:62;16162:8;16157:2;16142:18;;16135:36;16203:3;16188:19;;15985:228::o;16218:400::-;16420:2;16402:21;;;16459:2;16439:18;;;16432:30;16498:34;16493:2;16478:18;;16471:62;16569:6;16564:2;16549:18;;16542:34;16608:3;16593:19;;16392:226::o;16623:352::-;16825:2;16807:21;;;16864:2;16844:18;;;16837:30;16903;16898:2;16883:18;;16876:58;16966:2;16951:18;;16797:178::o;16980:177::-;17126:25;;;17114:2;17099:18;;17081:76::o;17162:248::-;17336:25;;;17392:2;17377:18;;17370:34;17324:2;17309:18;;17291:119::o;17415:319::-;17617:25;;;17673:2;17658:18;;17651:34;;;;17716:2;17701:18;;17694:34;17605:2;17590:18;;17572:162::o;17739:274::-;;17805:1;17795:2;;17840:77;17837:1;17830:88;17941:4;17938:1;17931:15;17969:4;17966:1;17959:15;17795:2;-1:-1:-1;17998:9:38;;17785:228::o;18018:453::-;18114:6;18137:5;18151:314;18200:1;18237:2;18227:8;18224:16;18214:2;;18244:5;;;18214:2;18285:4;18280:3;18276:14;18270:4;18267:24;18264:2;;;18294:18;;:::i;:::-;18344:2;18334:8;18330:17;18327:2;;;18359:16;;;;18327:2;18438:17;;;;;18398:15;;18151:314;;;18095:376;;;;;;;:::o;18476:199::-;;18565:104;18602:66;18592:8;18586:4;18680:922;18764:8;18754:2;;-1:-1:-1;18805:1:38;18819:5;;18754:2;18853:4;18843:2;;-1:-1:-1;18890:1:38;18904:5;;18843:2;18935:4;18953:1;18948:59;;;;19021:1;19016:183;;;;18928:271;;18948:59;18978:1;18969:10;;18992:5;;;19016:183;19053:3;19043:8;19040:17;19037:2;;;19060:18;;:::i;:::-;19116:1;19106:8;19102:16;19093:25;;19144:3;19137:5;19134:14;19131:2;;;19151:18;;:::i;:::-;19184:5;;;18928:271;;19283:2;19273:8;19270:16;19264:3;19258:4;19255:13;19251:36;19245:2;19235:8;19232:16;19227:2;19221:4;19218:12;19214:35;19211:77;19208:2;;;-1:-1:-1;19320:19:38;;;19355:14;;;19352:2;;;19372:18;;:::i;:::-;19405:5;;19208:2;19452:42;19490:3;19480:8;19474:4;19471:1;19452:42;:::i;:::-;19527:6;19522:3;19518:16;19509:7;19506:29;19503:2;;;19538:18;;:::i;:::-;19576:20;;18744:858;-1:-1:-1;;;;18744:858:38:o;19607:228::-;;19773:1;19705:66;19701:74;19698:1;19695:81;19690:1;19683:9;19676:17;19672:105;19669:2;;;19780:18;;:::i;:::-;-1:-1:-1;19820:9:38;;19659:176::o;19840:125::-;;19908:1;19905;19902:8;19899:2;;;19913:18;;:::i;:::-;-1:-1:-1;19950:9:38;;19889:76::o;19970:184::-;20022:77;20019:1;20012:88;20119:4;20116:1;20109:15;20143:4;20140:1;20133:15;20159:184;20211:77;20208:1;20201:88;20308:4;20305:1;20298:15;20332:4;20329:1;20322:15;20348:156;20436:42;20429:5;20425:54;20418:5;20415:65;20405:2;;20494:1;20491;20484:12;20405:2;20395:109;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"wrapper\",\"type\":\"address\"}],\"name\":\"_wrapEth\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"interoperable\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bridgeAmountDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ethAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MateriaLiquidityAdder.sol\":\"MateriaLiquidityAdder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/MateriaLiquidityAdder.sol\":{\"keccak256\":\"0x07134c9d3743bb66ae58af79b1ae68597a0bc2d7bba82e1ee4b414e88238c9ec\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://2fc574caa1dd443155699cfa2fd26f7ae99ca104d6c7bada01ec057a77df380e\",\"dweb:/ipfs/QmdBzfMkMRvkm1wX6okfhgXykjyQVpKVUQDGvjMUQwGyKi\"]},\"contracts/MateriaOperator.sol\":{\"keccak256\":\"0x0d1e0327e73a3b8a1b316f27d2ca2040917bb2c4c8bf0d0a6fd635798597d5a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://e86eebdbf5a6be0e77c9d6d849060a9ba537031956ca32a199eebaca576d51b5\",\"dweb:/ipfs/QmV6PgD4uuJhmywByCYPeAmRyENJsrY5xxmnxfY3pz9DXR\"]},\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IDoubleProxy.sol\":{\"keccak256\":\"0xb3775ff336d8ca9e0f7cb3b7e7c322d96c6360b53ec4a3ce45c6540d4f0126a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://6ec1948724904ecf9185f960548865d20a13969a840c926e9162e4bb354d18f6\",\"dweb:/ipfs/QmXbRyhfnW3E4Mij5y8v9JfHVB2vqxxwDgNfvHeu3wHiHJ\"]},\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IERC20WrapperV1.sol\":{\"keccak256\":\"0xb11ab8431790ecf02d6380277e277a1e44fcf1cbc81973301149e7080157ea4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b5dfc1840e8834ba39b1a634fdc2ba67d250adc4f8540f0ee33e16439ccb9cd\",\"dweb:/ipfs/QmTyF4vz44kcYuLuZAEW7tBxWuMiNZAojDKopi8oeudgk3\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]},\"contracts/interfaces/IEthItemMainInterface.sol\":{\"keccak256\":\"0x1bc85f4e88618a2d75910da856d5d43a87213463dae57054b44aa0e2220c43e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12240288d6503024c37ad756722f451ad3d819affd30b9d54ca0e06942c414b0\",\"dweb:/ipfs/QmU1hLcanobgXgEEXbbA56YPob23ghDXXqjK7gCCXbj3mT\"]},\"contracts/interfaces/IEthItemModelBase.sol\":{\"keccak256\":\"0x2ef4d851f1127e58dc496490f84ebe5690bff39c48a0ff43338d0087e3b114da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7db0efdf2c2c6c758fa12146e9aa31ebe1fc7b1eaa36d644ada5a7696b22c627\",\"dweb:/ipfs/QmXP62zz7qHJtQfxNRoxPsPiJxhXTKaKRfjCHGxetwgYyV\"]},\"contracts/interfaces/IMateriaFactory.sol\":{\"keccak256\":\"0xbb23d0937dd4e8da3b15e4e461603554abc9945d40b713f5f8f6e612d7e36dae\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://1cc856dd3375c7c345c693edda94b27d5c03d666843989308d6e61ef786b3718\",\"dweb:/ipfs/QmZaq9Vec3gVXNFoaWX56B2DQPYjpiDahdEoqogskHiJAp\"]},\"contracts/interfaces/IMateriaOrchestrator.sol\":{\"keccak256\":\"0x178eea6d9abe7758adbf30d406c9e3b1e05028441e6bf2661f6ac9d7441b06fc\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://b96f2d38b59f06bbfdf7d13e5a375e8eb6e1de507f40be7e7cbe37b34526a0e6\",\"dweb:/ipfs/QmSgMmM6Uk2EpgwNZxZpJf3yHHPQZ6LvcBWAV9DuPSnrCm\"]},\"contracts/interfaces/IMateriaPair.sol\":{\"keccak256\":\"0x9bebb503cf622a7e7328ff812b8817e1d3b22e273d345083118e92522b810693\",\"urls\":[\"bzz-raw://a0b3308a2e9f28a85ec586372329792eaf32562c7293af0657ef03f8d04bc7f9\",\"dweb:/ipfs/QmegwdpH1wYAUtTwKu1yUiekj13CB251znNc4Kb2Jf5b2L\"]},\"contracts/interfaces/INativeV1.sol\":{\"keccak256\":\"0x923c01bc275842ef09bd388355d611e119f115b92c283beb11b88d783696bae5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://117e0b85dba46111c974aa4a9e6ddd46d9d75198e93b6e2c571604fb5b25f5cb\",\"dweb:/ipfs/QmaVw7wqeR8jWMW55VPp6F1cMcGhb4VLAG3fPpRwTHmn3D\"]},\"contracts/libraries/MateriaLibrary.sol\":{\"keccak256\":\"0x84b8cdd67ecab6d9bd442140670a16c4608fefdcaa702c25339a89b0527381c6\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://f2ce38a46f0ddc6b043ba9e91590f482553fc96c7bec769825d36089f6d08887\",\"dweb:/ipfs/QmXVp7AwoHFm4whU26XE9kvaYmfb4QyXrzsqaEGXvgybFN\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xe04b4ed1aab8779734d012e907f742e8b6e8ad539c01d5466b9eb58752fdc514\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://667941f2ea3584629681a303e988ffcbc33a2e8313f4658ad8700b2209b3ea4d\",\"dweb:/ipfs/QmafqLrntkf6gRyhAHt4wYojdHwuZXeD8gcE7FJWW6rKWm\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0xb2c4a89b2ee4538b41badb2b6e2d141deeca68be9298ec3e7f98b6812b4ee2a2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bf3e8a68c38541e0425dfd1f825371086a9a18eaadf12000e00b0440156198b\",\"dweb:/ipfs/QmcfasSoXaDg5A5dscMiKH41fWnCFnbJfpSAzn5gbMaVxd\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506127a3806100206000396000f3fe6080604052600436106100655760003560e01c8063bc197c8111610043578063bc197c81146100e4578063f23a6e6114610111578063f717cd6d1461013157610065565b806301ffc9a71461006a5780639187aaca146100a0578063bb8a88bb146100c2575b600080fd5b34801561007657600080fd5b5061008a610085366004611dc0565b610151565b60405161009791906121ab565b60405180910390f35b3480156100ac57600080fd5b506100c06100bb366004611d38565b610159565b005b6100d56100d0366004611fd0565b61037d565b60405161009793929190612515565b3480156100f057600080fd5b506101046100ff366004611c03565b610749565b60405161009791906121b6565b34801561011d57600080fd5b5061010461012c366004611cbe565b610750565b61014461013f366004611e66565b6107ac565b604051610097919061210c565b60005b919050565b80428110156101835760405162461bcd60e51b815260040161017a906122e5565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff16631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156101cb57600080fd5b505afa1580156101df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102039190611be7565b905060006102118a88610836565b965061021f8a33308c6108dd565b61022a8a8a846109ef565b809a50819250505060006102c0823073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027e57600080fd5b505afa158015610292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b69190611be7565b8c8c8c8c8c610d4a565b505090506000818b6102d291906126d3565b9050801561036f5761036f8473ffffffffffffffffffffffffffffffffffffffff16631bf8ee708e6040518263ffffffff1660e01b8152600401610316919061210c565b60206040518083038186803b15801561032e57600080fd5b505afa158015610342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103669190611e4e565b8d838733610ebc565b505050505050505050505050565b600080600083428110156103a35760405162461bcd60e51b815260040161017a906122e5565b60003073ffffffffffffffffffffffffffffffffffffffff16631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156103eb57600080fd5b505afa1580156103ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104239190611be7565b905060003073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046d57600080fd5b505afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a59190611be7565b905060008273ffffffffffffffffffffffffffffffffffffffff16630c0f6b713073ffffffffffffffffffffffffffffffffffffffff1663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561050b57600080fd5b505afa15801561051f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105439190611e4e565b6040518263ffffffff1660e01b815260040161055f91906124fe565b60206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105af9190611be7565b90506105bf8183348f8f8f610fdc565b90975095506105ce87846107ac565b5060006106593073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561061a57600080fd5b505afa15801561062e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106529190611be7565b83856112ba565b905061066682828a611348565b6106728333838a6108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a627842906106c4908d9060040161210c565b602060405180830381600087803b1580156106de57600080fd5b505af11580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107169190611e4e565b95506000806107258a346126d3565b9150811115610738576107383382611450565b505050505050955095509592505050565b6000806000fd5b600080606061076184860186611eb9565b909250905060018214156100655761077c3388888b856114ef565b5050507ff23a6e610000000000000000000000000000000000000000000000000000000098975050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061082e9190611e95565b949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b69190611e4e565b6108c19060126126d3565b6108cc90600a6125aa565b6108d69083612696565b9392505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161091193929190612154565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161095f9190612052565b6000604051808303816000865af19150503d806000811461099c576040519150601f19603f3d011682016040523d82523d6000602084013e6109a1565b606091505b50915091508180156109cb5750805115806109cb5750808060200190518101906109cb9190611da0565b6109e75760405162461bcd60e51b815260040161017a9061246a565b505050505050565b600080838573ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401610a2e92919061212d565b60206040518083038186803b158015610a4657600080fd5b505afa158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190611e4e565b1015610b4c576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063095ea7b390610af89086907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401612185565b602060405180830381600087803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a9190611da0565b505b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906340c10f1990610ba39089908990600401612185565b6040805180830381600087803b158015610bbc57600080fd5b505af1158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf49190611e95565b506040517f0c0f6b7100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff851690630c0f6b7190610c4a9084906004016124fe565b60206040518083038186803b158015610c6257600080fd5b505afa158015610c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9a9190611be7565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290935073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190610cef90309060040161210c565b60206040518083038186803b158015610d0757600080fd5b505afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f9190611e4e565b915050935093915050565b6000806000610d5d8a8a8a8a8a8a610fdc565b80935081945050506000610def3073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610db057600080fd5b505afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190611be7565b8c8c6112ba565b9050610dfc8b8286611348565b610e088a3383866108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a62784290610e5a90889060040161210c565b602060405180830381600087803b158015610e7457600080fd5b505af1158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190611e4e565b9150509750975097945050505050565b6040517fb390c0ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063b390c0ab90610f109088908790600401612507565b600060405180830381600087803b158015610f2a57600080fd5b505af1158015610f3e573d6000803e3d6000fd5b50505050610fd584828673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f80919061210c565b60206040518083038186803b158015610f9857600080fd5b505afa158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190611e4e565b611348565b5050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561102757600080fd5b505afa15801561103b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105f9190611be7565b6040517fe6a4390500000000000000000000000000000000000000000000000000000000815290915060009073ffffffffffffffffffffffffffffffffffffffff83169063e6a43905906110b9908d908d9060040161212d565b60206040518083038186803b1580156110d157600080fd5b505afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111099190611be7565b73ffffffffffffffffffffffffffffffffffffffff1614156111cd576040517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063c9c6539690611179908c908c9060040161212d565b602060405180830381600087803b15801561119357600080fd5b505af11580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb9190611be7565b505b6000806111db838c8c6117e6565b915091508160001480156111ed575080155b156111fd578894508793506112ac565b600061120a8a84846118f4565b905088811161123e57868110156112335760405162461bcd60e51b815260040161017a90612379565b8995509350836112aa565b600061124b8a84866118f4565b90508a811115611284577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b888110156112a45760405162461bcd60e51b815260040161017a906122ae565b95508894505b505b505050965096945050505050565b60008060006112c98585611956565b915091508582826040516020016112e1929190612018565b6040516020818303038152906040528051906020012060405160200161130892919061208b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161137a929190612185565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516113c89190612052565b6000604051808303816000865af19150503d8060008114611405576040519150601f19603f3d011682016040523d82523d6000602084013e61140a565b606091505b50915091508180156114345750805115806114345750808060200190518101906114349190611da0565b610fd55760405162461bcd60e51b815260040161017a906121e3565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114879190612052565b60006040518083038185875af1925050503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b50509050806114ea5760405162461bcd60e51b815260040161017a906123b0565b505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153a57600080fd5b505afa15801561154e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115729190611be7565b90506000806000808780602001905181019061158e9190611f84565b929a5090985091955090935091506115a582611a21565b6115ae8c611a46565b156115b957896115cb565b6115cb8a670de0b6b3a7640000612696565b99506116668c73ffffffffffffffffffffffffffffffffffffffff16630c0f6b718d6040518263ffffffff1660e01b815260040161160991906124fe565b60206040518083038186803b15801561162157600080fd5b505afa158015611635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116599190611be7565b915081868c878b8b610fdc565b809750819850505060006116f83073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b957600080fd5b505afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f19190611be7565b83886112ba565b905061170582828a611348565b611711868b838a6108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061176390879060040161210c565b602060405180830381600087803b15801561177d57600080fd5b505af1158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190611e4e565b5060006117c2898d6126d3565b9b508b11156117d6576117d6828b8d611348565b5050505050509550959350505050565b60008060006117f58585611956565b5090506000806118068888886112ba565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561184b57600080fd5b505afa15801561185f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118839190611e00565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146118e25780826118e5565b81815b90999098509650505050505050565b60008084116119155760405162461bcd60e51b815260040161017a90612251565b6000831180156119255750600082115b6119415760405162461bcd60e51b815260040161017a9061240d565b8261194c8584611b01565b61082e919061252b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119a55760405162461bcd60e51b815260040161017a9061231c565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106119df5782846119e2565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216611a1a5760405162461bcd60e51b815260040161017a906124c7565b9250929050565b8042811015611a425760405162461bcd60e51b815260040161017a906122e5565b5050565b60008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8e57600080fd5b505afa925050508015611adc575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611ad991810190611e4e565b60015b611ae857506012610154565b80600114611af65780611af9565b60005b915050610154565b6000811580611b2557508282611b178183612696565b9250611b23908361252b565b145b611b415760405162461bcd60e51b815260040161017a9061221a565b92915050565b60008083601f840112611b58578182fd5b50813567ffffffffffffffff811115611b6f578182fd5b6020830191508360208083028501011115611a1a57600080fd5b60008083601f840112611b9a578182fd5b50813567ffffffffffffffff811115611bb1578182fd5b602083019150836020828501011115611a1a57600080fd5b80516dffffffffffffffffffffffffffff8116811461015457600080fd5b600060208284031215611bf8578081fd5b81516108d681612748565b60008060008060008060008060a0898b031215611c1e578384fd5b8835611c2981612748565b97506020890135611c3981612748565b9650604089013567ffffffffffffffff80821115611c55578586fd5b611c618c838d01611b47565b909850965060608b0135915080821115611c79578586fd5b611c858c838d01611b47565b909650945060808b0135915080821115611c9d578384fd5b50611caa8b828c01611b89565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611cd6578182fd5b8635611ce181612748565b95506020870135611cf181612748565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d1a578283fd5b611d2689828a01611b89565b979a9699509497509295939492505050565b600080600080600080600060e0888a031215611d52578283fd5b8735611d5d81612748565b96506020880135955060408801359450606088013593506080880135925060a0880135611d8981612748565b8092505060c0880135905092959891949750929550565b600060208284031215611db1578081fd5b815180151581146108d6578182fd5b600060208284031215611dd1578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108d6578182fd5b600080600060608486031215611e14578081fd5b611e1d84611bc9565b9250611e2b60208501611bc9565b9150604084015163ffffffff81168114611e43578182fd5b809150509250925092565b600060208284031215611e5f578081fd5b5051919050565b60008060408385031215611e78578182fd5b823591506020830135611e8a81612748565b809150509250929050565b60008060408385031215611ea7578182fd5b825191506020830151611e8a81612748565b60008060408385031215611ecb578182fd5b8235915060208084013567ffffffffffffffff80821115611eea578384fd5b818601915086601f830112611efd578384fd5b813581811115611f0f57611f0f612719565b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715611f5057611f50612719565b6040528181528382018501891015611f66578586fd5b81858501868301378585838301015280955050505050509250929050565b600080600080600060a08688031215611f9b578283fd5b8551945060208601519350604086015192506060860151611fbb81612748565b80925050608086015190509295509295909350565b600080600080600060a08688031215611fe7578283fd5b853594506020860135935060408601359250606086013561200781612748565b949793965091946080013592915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b818110156120725760208186018101518583015201612058565b818111156120805782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f494e53554646494349454e545f415f414d4f554e540000000000000000000000604082015260600190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f494e53554646494349454e545f425f414d4f554e540000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b60008261255f577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b80825b600180861161257657506125a1565b818704821115612588576125886126ea565b8086161561259557918102915b9490941c938002612567565b94509492505050565b60006108d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846000826125e1575060016108d6565b816125ee575060006108d6565b8160018114612604576002811461260e5761263b565b60019150506108d6565b60ff84111561261f5761261f6126ea565b6001841b915084821115612635576126356126ea565b506108d6565b5060208310610133831016604e8410600b841016171561266e575081810a83811115612669576126696126ea565b6108d6565b61267b8484846001612564565b80860482111561268d5761268d6126ea565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126ce576126ce6126ea565b500290565b6000828210156126e5576126e56126ea565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461276a57600080fd5b5056fea2646970667358221220a7c0abbdb43a4bc7322710ea0e0a70c0959358d259060d46ed5bbdfe1dbc196f64736f6c63430008000033",
      "bin": "608060405234801561001057600080fd5b506127a3806100206000396000f3fe6080604052600436106100655760003560e01c8063bc197c8111610043578063bc197c81146100e4578063f23a6e6114610111578063f717cd6d1461013157610065565b806301ffc9a71461006a5780639187aaca146100a0578063bb8a88bb146100c2575b600080fd5b34801561007657600080fd5b5061008a610085366004611dc0565b610151565b60405161009791906121ab565b60405180910390f35b3480156100ac57600080fd5b506100c06100bb366004611d38565b610159565b005b6100d56100d0366004611fd0565b61037d565b60405161009793929190612515565b3480156100f057600080fd5b506101046100ff366004611c03565b610749565b60405161009791906121b6565b34801561011d57600080fd5b5061010461012c366004611cbe565b610750565b61014461013f366004611e66565b6107ac565b604051610097919061210c565b60005b919050565b80428110156101835760405162461bcd60e51b815260040161017a906122e5565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff16631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156101cb57600080fd5b505afa1580156101df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102039190611be7565b905060006102118a88610836565b965061021f8a33308c6108dd565b61022a8a8a846109ef565b809a50819250505060006102c0823073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027e57600080fd5b505afa158015610292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b69190611be7565b8c8c8c8c8c610d4a565b505090506000818b6102d291906126d3565b9050801561036f5761036f8473ffffffffffffffffffffffffffffffffffffffff16631bf8ee708e6040518263ffffffff1660e01b8152600401610316919061210c565b60206040518083038186803b15801561032e57600080fd5b505afa158015610342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103669190611e4e565b8d838733610ebc565b505050505050505050505050565b600080600083428110156103a35760405162461bcd60e51b815260040161017a906122e5565b60003073ffffffffffffffffffffffffffffffffffffffff16631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156103eb57600080fd5b505afa1580156103ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104239190611be7565b905060003073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046d57600080fd5b505afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a59190611be7565b905060008273ffffffffffffffffffffffffffffffffffffffff16630c0f6b713073ffffffffffffffffffffffffffffffffffffffff1663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561050b57600080fd5b505afa15801561051f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105439190611e4e565b6040518263ffffffff1660e01b815260040161055f91906124fe565b60206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105af9190611be7565b90506105bf8183348f8f8f610fdc565b90975095506105ce87846107ac565b5060006106593073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561061a57600080fd5b505afa15801561062e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106529190611be7565b83856112ba565b905061066682828a611348565b6106728333838a6108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a627842906106c4908d9060040161210c565b602060405180830381600087803b1580156106de57600080fd5b505af11580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107169190611e4e565b95506000806107258a346126d3565b9150811115610738576107383382611450565b505050505050955095509592505050565b6000806000fd5b600080606061076184860186611eb9565b909250905060018214156100655761077c3388888b856114ef565b5050507ff23a6e610000000000000000000000000000000000000000000000000000000098975050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061082e9190611e95565b949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b69190611e4e565b6108c19060126126d3565b6108cc90600a6125aa565b6108d69083612696565b9392505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161091193929190612154565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161095f9190612052565b6000604051808303816000865af19150503d806000811461099c576040519150601f19603f3d011682016040523d82523d6000602084013e6109a1565b606091505b50915091508180156109cb5750805115806109cb5750808060200190518101906109cb9190611da0565b6109e75760405162461bcd60e51b815260040161017a9061246a565b505050505050565b600080838573ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401610a2e92919061212d565b60206040518083038186803b158015610a4657600080fd5b505afa158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190611e4e565b1015610b4c576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063095ea7b390610af89086907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401612185565b602060405180830381600087803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a9190611da0565b505b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906340c10f1990610ba39089908990600401612185565b6040805180830381600087803b158015610bbc57600080fd5b505af1158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf49190611e95565b506040517f0c0f6b7100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff851690630c0f6b7190610c4a9084906004016124fe565b60206040518083038186803b158015610c6257600080fd5b505afa158015610c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9a9190611be7565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290935073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190610cef90309060040161210c565b60206040518083038186803b158015610d0757600080fd5b505afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f9190611e4e565b915050935093915050565b6000806000610d5d8a8a8a8a8a8a610fdc565b80935081945050506000610def3073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610db057600080fd5b505afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190611be7565b8c8c6112ba565b9050610dfc8b8286611348565b610e088a3383866108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a62784290610e5a90889060040161210c565b602060405180830381600087803b158015610e7457600080fd5b505af1158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190611e4e565b9150509750975097945050505050565b6040517fb390c0ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063b390c0ab90610f109088908790600401612507565b600060405180830381600087803b158015610f2a57600080fd5b505af1158015610f3e573d6000803e3d6000fd5b50505050610fd584828673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f80919061210c565b60206040518083038186803b158015610f9857600080fd5b505afa158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190611e4e565b611348565b5050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561102757600080fd5b505afa15801561103b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105f9190611be7565b6040517fe6a4390500000000000000000000000000000000000000000000000000000000815290915060009073ffffffffffffffffffffffffffffffffffffffff83169063e6a43905906110b9908d908d9060040161212d565b60206040518083038186803b1580156110d157600080fd5b505afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111099190611be7565b73ffffffffffffffffffffffffffffffffffffffff1614156111cd576040517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063c9c6539690611179908c908c9060040161212d565b602060405180830381600087803b15801561119357600080fd5b505af11580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb9190611be7565b505b6000806111db838c8c6117e6565b915091508160001480156111ed575080155b156111fd578894508793506112ac565b600061120a8a84846118f4565b905088811161123e57868110156112335760405162461bcd60e51b815260040161017a90612379565b8995509350836112aa565b600061124b8a84866118f4565b90508a811115611284577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b888110156112a45760405162461bcd60e51b815260040161017a906122ae565b95508894505b505b505050965096945050505050565b60008060006112c98585611956565b915091508582826040516020016112e1929190612018565b6040516020818303038152906040528051906020012060405160200161130892919061208b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161137a929190612185565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516113c89190612052565b6000604051808303816000865af19150503d8060008114611405576040519150601f19603f3d011682016040523d82523d6000602084013e61140a565b606091505b50915091508180156114345750805115806114345750808060200190518101906114349190611da0565b610fd55760405162461bcd60e51b815260040161017a906121e3565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114879190612052565b60006040518083038185875af1925050503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b50509050806114ea5760405162461bcd60e51b815260040161017a906123b0565b505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153a57600080fd5b505afa15801561154e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115729190611be7565b90506000806000808780602001905181019061158e9190611f84565b929a5090985091955090935091506115a582611a21565b6115ae8c611a46565b156115b957896115cb565b6115cb8a670de0b6b3a7640000612696565b99506116668c73ffffffffffffffffffffffffffffffffffffffff16630c0f6b718d6040518263ffffffff1660e01b815260040161160991906124fe565b60206040518083038186803b15801561162157600080fd5b505afa158015611635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116599190611be7565b915081868c878b8b610fdc565b809750819850505060006116f83073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b957600080fd5b505afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f19190611be7565b83886112ba565b905061170582828a611348565b611711868b838a6108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061176390879060040161210c565b602060405180830381600087803b15801561177d57600080fd5b505af1158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190611e4e565b5060006117c2898d6126d3565b9b508b11156117d6576117d6828b8d611348565b5050505050509550959350505050565b60008060006117f58585611956565b5090506000806118068888886112ba565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561184b57600080fd5b505afa15801561185f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118839190611e00565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146118e25780826118e5565b81815b90999098509650505050505050565b60008084116119155760405162461bcd60e51b815260040161017a90612251565b6000831180156119255750600082115b6119415760405162461bcd60e51b815260040161017a9061240d565b8261194c8584611b01565b61082e919061252b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119a55760405162461bcd60e51b815260040161017a9061231c565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106119df5782846119e2565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216611a1a5760405162461bcd60e51b815260040161017a906124c7565b9250929050565b8042811015611a425760405162461bcd60e51b815260040161017a906122e5565b5050565b60008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8e57600080fd5b505afa925050508015611adc575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611ad991810190611e4e565b60015b611ae857506012610154565b80600114611af65780611af9565b60005b915050610154565b6000811580611b2557508282611b178183612696565b9250611b23908361252b565b145b611b415760405162461bcd60e51b815260040161017a9061221a565b92915050565b60008083601f840112611b58578182fd5b50813567ffffffffffffffff811115611b6f578182fd5b6020830191508360208083028501011115611a1a57600080fd5b60008083601f840112611b9a578182fd5b50813567ffffffffffffffff811115611bb1578182fd5b602083019150836020828501011115611a1a57600080fd5b80516dffffffffffffffffffffffffffff8116811461015457600080fd5b600060208284031215611bf8578081fd5b81516108d681612748565b60008060008060008060008060a0898b031215611c1e578384fd5b8835611c2981612748565b97506020890135611c3981612748565b9650604089013567ffffffffffffffff80821115611c55578586fd5b611c618c838d01611b47565b909850965060608b0135915080821115611c79578586fd5b611c858c838d01611b47565b909650945060808b0135915080821115611c9d578384fd5b50611caa8b828c01611b89565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611cd6578182fd5b8635611ce181612748565b95506020870135611cf181612748565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d1a578283fd5b611d2689828a01611b89565b979a9699509497509295939492505050565b600080600080600080600060e0888a031215611d52578283fd5b8735611d5d81612748565b96506020880135955060408801359450606088013593506080880135925060a0880135611d8981612748565b8092505060c0880135905092959891949750929550565b600060208284031215611db1578081fd5b815180151581146108d6578182fd5b600060208284031215611dd1578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108d6578182fd5b600080600060608486031215611e14578081fd5b611e1d84611bc9565b9250611e2b60208501611bc9565b9150604084015163ffffffff81168114611e43578182fd5b809150509250925092565b600060208284031215611e5f578081fd5b5051919050565b60008060408385031215611e78578182fd5b823591506020830135611e8a81612748565b809150509250929050565b60008060408385031215611ea7578182fd5b825191506020830151611e8a81612748565b60008060408385031215611ecb578182fd5b8235915060208084013567ffffffffffffffff80821115611eea578384fd5b818601915086601f830112611efd578384fd5b813581811115611f0f57611f0f612719565b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715611f5057611f50612719565b6040528181528382018501891015611f66578586fd5b81858501868301378585838301015280955050505050509250929050565b600080600080600060a08688031215611f9b578283fd5b8551945060208601519350604086015192506060860151611fbb81612748565b80925050608086015190509295509295909350565b600080600080600060a08688031215611fe7578283fd5b853594506020860135935060408601359250606086013561200781612748565b949793965091946080013592915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b818110156120725760208186018101518583015201612058565b818111156120805782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f494e53554646494349454e545f415f414d4f554e540000000000000000000000604082015260600190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f494e53554646494349454e545f425f414d4f554e540000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b60008261255f577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b80825b600180861161257657506125a1565b818704821115612588576125886126ea565b8086161561259557918102915b9490941c938002612567565b94509492505050565b60006108d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846000826125e1575060016108d6565b816125ee575060006108d6565b8160018114612604576002811461260e5761263b565b60019150506108d6565b60ff84111561261f5761261f6126ea565b6001841b915084821115612635576126356126ea565b506108d6565b5060208310610133831016604e8410600b841016171561266e575081810a83811115612669576126696126ea565b6108d6565b61267b8484846001612564565b80860482111561268d5761268d6126ea565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126ce576126ce6126ea565b500290565b6000828210156126e5576126e56126ea565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461276a57600080fd5b5056fea2646970667358221220a7c0abbdb43a4bc7322710ea0e0a70c0959358d259060d46ed5bbdfe1dbc196f64736f6c63430008000033",
      "bin-runtime": "6080604052600436106100655760003560e01c8063bc197c8111610043578063bc197c81146100e4578063f23a6e6114610111578063f717cd6d1461013157610065565b806301ffc9a71461006a5780639187aaca146100a0578063bb8a88bb146100c2575b600080fd5b34801561007657600080fd5b5061008a610085366004611dc0565b610151565b60405161009791906121ab565b60405180910390f35b3480156100ac57600080fd5b506100c06100bb366004611d38565b610159565b005b6100d56100d0366004611fd0565b61037d565b60405161009793929190612515565b3480156100f057600080fd5b506101046100ff366004611c03565b610749565b60405161009791906121b6565b34801561011d57600080fd5b5061010461012c366004611cbe565b610750565b61014461013f366004611e66565b6107ac565b604051610097919061210c565b60005b919050565b80428110156101835760405162461bcd60e51b815260040161017a906122e5565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff16631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156101cb57600080fd5b505afa1580156101df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102039190611be7565b905060006102118a88610836565b965061021f8a33308c6108dd565b61022a8a8a846109ef565b809a50819250505060006102c0823073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027e57600080fd5b505afa158015610292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b69190611be7565b8c8c8c8c8c610d4a565b505090506000818b6102d291906126d3565b9050801561036f5761036f8473ffffffffffffffffffffffffffffffffffffffff16631bf8ee708e6040518263ffffffff1660e01b8152600401610316919061210c565b60206040518083038186803b15801561032e57600080fd5b505afa158015610342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103669190611e4e565b8d838733610ebc565b505050505050505050505050565b600080600083428110156103a35760405162461bcd60e51b815260040161017a906122e5565b60003073ffffffffffffffffffffffffffffffffffffffff16631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156103eb57600080fd5b505afa1580156103ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104239190611be7565b905060003073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046d57600080fd5b505afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a59190611be7565b905060008273ffffffffffffffffffffffffffffffffffffffff16630c0f6b713073ffffffffffffffffffffffffffffffffffffffff1663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561050b57600080fd5b505afa15801561051f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105439190611e4e565b6040518263ffffffff1660e01b815260040161055f91906124fe565b60206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105af9190611be7565b90506105bf8183348f8f8f610fdc565b90975095506105ce87846107ac565b5060006106593073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561061a57600080fd5b505afa15801561062e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106529190611be7565b83856112ba565b905061066682828a611348565b6106728333838a6108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a627842906106c4908d9060040161210c565b602060405180830381600087803b1580156106de57600080fd5b505af11580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107169190611e4e565b95506000806107258a346126d3565b9150811115610738576107383382611450565b505050505050955095509592505050565b6000806000fd5b600080606061076184860186611eb9565b909250905060018214156100655761077c3388888b856114ef565b5050507ff23a6e610000000000000000000000000000000000000000000000000000000098975050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061082e9190611e95565b949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b69190611e4e565b6108c19060126126d3565b6108cc90600a6125aa565b6108d69083612696565b9392505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161091193929190612154565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161095f9190612052565b6000604051808303816000865af19150503d806000811461099c576040519150601f19603f3d011682016040523d82523d6000602084013e6109a1565b606091505b50915091508180156109cb5750805115806109cb5750808060200190518101906109cb9190611da0565b6109e75760405162461bcd60e51b815260040161017a9061246a565b505050505050565b600080838573ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401610a2e92919061212d565b60206040518083038186803b158015610a4657600080fd5b505afa158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e9190611e4e565b1015610b4c576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063095ea7b390610af89086907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401612185565b602060405180830381600087803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a9190611da0565b505b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906340c10f1990610ba39089908990600401612185565b6040805180830381600087803b158015610bbc57600080fd5b505af1158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf49190611e95565b506040517f0c0f6b7100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff851690630c0f6b7190610c4a9084906004016124fe565b60206040518083038186803b158015610c6257600080fd5b505afa158015610c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9a9190611be7565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290935073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190610cef90309060040161210c565b60206040518083038186803b158015610d0757600080fd5b505afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f9190611e4e565b915050935093915050565b6000806000610d5d8a8a8a8a8a8a610fdc565b80935081945050506000610def3073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610db057600080fd5b505afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190611be7565b8c8c6112ba565b9050610dfc8b8286611348565b610e088a3383866108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a62784290610e5a90889060040161210c565b602060405180830381600087803b158015610e7457600080fd5b505af1158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190611e4e565b9150509750975097945050505050565b6040517fb390c0ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063b390c0ab90610f109088908790600401612507565b600060405180830381600087803b158015610f2a57600080fd5b505af1158015610f3e573d6000803e3d6000fd5b50505050610fd584828673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f80919061210c565b60206040518083038186803b158015610f9857600080fd5b505afa158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190611e4e565b611348565b5050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561102757600080fd5b505afa15801561103b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105f9190611be7565b6040517fe6a4390500000000000000000000000000000000000000000000000000000000815290915060009073ffffffffffffffffffffffffffffffffffffffff83169063e6a43905906110b9908d908d9060040161212d565b60206040518083038186803b1580156110d157600080fd5b505afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111099190611be7565b73ffffffffffffffffffffffffffffffffffffffff1614156111cd576040517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063c9c6539690611179908c908c9060040161212d565b602060405180830381600087803b15801561119357600080fd5b505af11580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb9190611be7565b505b6000806111db838c8c6117e6565b915091508160001480156111ed575080155b156111fd578894508793506112ac565b600061120a8a84846118f4565b905088811161123e57868110156112335760405162461bcd60e51b815260040161017a90612379565b8995509350836112aa565b600061124b8a84866118f4565b90508a811115611284577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b888110156112a45760405162461bcd60e51b815260040161017a906122ae565b95508894505b505b505050965096945050505050565b60008060006112c98585611956565b915091508582826040516020016112e1929190612018565b6040516020818303038152906040528051906020012060405160200161130892919061208b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161137a929190612185565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516113c89190612052565b6000604051808303816000865af19150503d8060008114611405576040519150601f19603f3d011682016040523d82523d6000602084013e61140a565b606091505b50915091508180156114345750805115806114345750808060200190518101906114349190611da0565b610fd55760405162461bcd60e51b815260040161017a906121e3565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114879190612052565b60006040518083038185875af1925050503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b50509050806114ea5760405162461bcd60e51b815260040161017a906123b0565b505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff1663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153a57600080fd5b505afa15801561154e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115729190611be7565b90506000806000808780602001905181019061158e9190611f84565b929a5090985091955090935091506115a582611a21565b6115ae8c611a46565b156115b957896115cb565b6115cb8a670de0b6b3a7640000612696565b99506116668c73ffffffffffffffffffffffffffffffffffffffff16630c0f6b718d6040518263ffffffff1660e01b815260040161160991906124fe565b60206040518083038186803b15801561162157600080fd5b505afa158015611635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116599190611be7565b915081868c878b8b610fdc565b809750819850505060006116f83073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b957600080fd5b505afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f19190611be7565b83886112ba565b905061170582828a611348565b611711868b838a6108dd565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061176390879060040161210c565b602060405180830381600087803b15801561177d57600080fd5b505af1158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190611e4e565b5060006117c2898d6126d3565b9b508b11156117d6576117d6828b8d611348565b5050505050509550959350505050565b60008060006117f58585611956565b5090506000806118068888886112ba565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561184b57600080fd5b505afa15801561185f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118839190611e00565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146118e25780826118e5565b81815b90999098509650505050505050565b60008084116119155760405162461bcd60e51b815260040161017a90612251565b6000831180156119255750600082115b6119415760405162461bcd60e51b815260040161017a9061240d565b8261194c8584611b01565b61082e919061252b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119a55760405162461bcd60e51b815260040161017a9061231c565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106119df5782846119e2565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216611a1a5760405162461bcd60e51b815260040161017a906124c7565b9250929050565b8042811015611a425760405162461bcd60e51b815260040161017a906122e5565b5050565b60008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8e57600080fd5b505afa925050508015611adc575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611ad991810190611e4e565b60015b611ae857506012610154565b80600114611af65780611af9565b60005b915050610154565b6000811580611b2557508282611b178183612696565b9250611b23908361252b565b145b611b415760405162461bcd60e51b815260040161017a9061221a565b92915050565b60008083601f840112611b58578182fd5b50813567ffffffffffffffff811115611b6f578182fd5b6020830191508360208083028501011115611a1a57600080fd5b60008083601f840112611b9a578182fd5b50813567ffffffffffffffff811115611bb1578182fd5b602083019150836020828501011115611a1a57600080fd5b80516dffffffffffffffffffffffffffff8116811461015457600080fd5b600060208284031215611bf8578081fd5b81516108d681612748565b60008060008060008060008060a0898b031215611c1e578384fd5b8835611c2981612748565b97506020890135611c3981612748565b9650604089013567ffffffffffffffff80821115611c55578586fd5b611c618c838d01611b47565b909850965060608b0135915080821115611c79578586fd5b611c858c838d01611b47565b909650945060808b0135915080821115611c9d578384fd5b50611caa8b828c01611b89565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611cd6578182fd5b8635611ce181612748565b95506020870135611cf181612748565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d1a578283fd5b611d2689828a01611b89565b979a9699509497509295939492505050565b600080600080600080600060e0888a031215611d52578283fd5b8735611d5d81612748565b96506020880135955060408801359450606088013593506080880135925060a0880135611d8981612748565b8092505060c0880135905092959891949750929550565b600060208284031215611db1578081fd5b815180151581146108d6578182fd5b600060208284031215611dd1578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108d6578182fd5b600080600060608486031215611e14578081fd5b611e1d84611bc9565b9250611e2b60208501611bc9565b9150604084015163ffffffff81168114611e43578182fd5b809150509250925092565b600060208284031215611e5f578081fd5b5051919050565b60008060408385031215611e78578182fd5b823591506020830135611e8a81612748565b809150509250929050565b60008060408385031215611ea7578182fd5b825191506020830151611e8a81612748565b60008060408385031215611ecb578182fd5b8235915060208084013567ffffffffffffffff80821115611eea578384fd5b818601915086601f830112611efd578384fd5b813581811115611f0f57611f0f612719565b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715611f5057611f50612719565b6040528181528382018501891015611f66578586fd5b81858501868301378585838301015280955050505050509250929050565b600080600080600060a08688031215611f9b578283fd5b8551945060208601519350604086015192506060860151611fbb81612748565b80925050608086015190509295509295909350565b600080600080600060a08688031215611fe7578283fd5b853594506020860135935060408601359250606086013561200781612748565b949793965091946080013592915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b818110156120725760208186018101518583015201612058565b818111156120805782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f494e53554646494349454e545f415f414d4f554e540000000000000000000000604082015260600190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f494e53554646494349454e545f425f414d4f554e540000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b60008261255f577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b80825b600180861161257657506125a1565b818704821115612588576125886126ea565b8086161561259557918102915b9490941c938002612567565b94509492505050565b60006108d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846000826125e1575060016108d6565b816125ee575060006108d6565b8160018114612604576002811461260e5761263b565b60019150506108d6565b60ff84111561261f5761261f6126ea565b6001841b915084821115612635576126356126ea565b506108d6565b5060208310610133831016604e8410600b841016171561266e575081810a83811115612669576126696126ea565b6108d6565b61267b8484846001612564565b80860482111561268d5761268d6126ea565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126ce576126ce6126ea565b500290565b6000828210156126e5576126e56126ea565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461276a57600080fd5b5056fea2646970667358221220a7c0abbdb43a4bc7322710ea0e0a70c0959358d259060d46ed5bbdfe1dbc196f64736f6c63430008000033",
      "srcmap": "381:7397:0:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "381:7397:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7676:100;;;;;;;;;;-1:-1:-1;7676:100:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2837:1171;;;;;;;;;;-1:-1:-1;2837:1171:0;;;;;:::i;:::-;;:::i;:::-;;4014:1487;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;7455:215::-;;;;;;;;;;-1:-1:-1;7455:215:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6967:482::-;;;;;;;;;;-1:-1:-1;6967:482:0;;;;;:::i;:::-;;:::i;1992:184:2:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7676:100:0:-;7741:4;7676:100;;;;:::o;2837:1171::-;3086:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;;;;;;;;;3106:20:0::1;3166:4;3137:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3106:82;;3198:21;3247:36;3261:5;3268:14;3247:13;:36::i;:::-;3230:53;;3294:85;3326:5;3333:10;3353:4;3360:18;3294:31;:85::i;:::-;3427:51;3438:5;3445:18;3465:12;3427:10;:51::i;:::-;3389:89;;;;;;;;3490:19;3529:294;3562:13;3630:4;3601:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3669:18;3705:19;3742:14;3774:15;3807:2;3529:15;:294::i;:::-;3489:334;;;;3834:12;3870:11;3849:18;:32;;;;:::i;:::-;3834:47:::0;-1:-1:-1;3895:8:0;;3891:110:::1;;3905:96;3934:12;3918:36;;;3955:5;3918:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3963:5;3970:4;3976:12;3990:10;3905:12;:96::i;:::-;500:1:2;;;;2837:1171:0::0;;;;;;;;:::o;4014:1487::-;4277:17;4308:20;4342:17;4237:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;4384:20:0::1;4444:4;4415:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4384:82;;4476:19;4535:4;4506:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4476:80;;4567:12;4635;4619:45;;;4723:4;4694:54;;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4619:150;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4567:216;;4822:177;4849:4;4867:11;4892:9;4915:19;4948:12;4974:15;4822:13;:177::i;:::-;4794:205:::0;;-1:-1:-1;4794:205:0;-1:-1:-1;5010:33:0::1;4794:205:::0;5030:12;5010:8:::1;:33::i;:::-;;5054:12;5081:97;5141:4;5112:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5160:4;5166:11;5081:22;:97::i;:::-;5054:124;;5188:50;5216:4;5222;5228:9;5188:27;:50::i;:::-;5248:76;5280:11;5293:10;5305:4;5311:12;5248:31;:76::i;:::-;5346:27;::::0;;;;:23:::1;::::0;::::1;::::0;::::1;::::0;:27:::1;::::0;5370:2;;5346:27:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5334:39:::0;-1:-1:-1;5384:12:0::1;::::0;5418:21:::1;5430:9:::0;5418::::1;:21;:::i;:::-;5411:28;;;5410:34;5406:88;;;5446:48;5477:10;5489:4;5446:30;:48::i;:::-;500:1:2;;;;;4014:1487:0::0;;;;;;;;;;:::o;7455:215::-;7637:6;7655:8;;;6967:482;7136:6;;7181:20;7235:34;;;;7246:4;7235:34;:::i;:::-;7212:57;;-1:-1:-1;7212:57:0;-1:-1:-1;7297:1:0;7284:14;;7280:113;;;7314:54;7331:10;7343:2;7347:5;7354:4;7360:7;7314:16;:54::i;:::-;;;-1:-1:-1;7411:31:0;;6967:482;-1:-1:-1;;;;;;;;6967:482:0:o;1992:184:2:-;2067:21;2136:7;2120:32;;;2160:6;2120:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2100:69;1992:184;-1:-1:-1;;;;1992:184:2:o;2182:175::-;2259:17;2331:5;2320:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2315:33;;:2;:33;:::i;:::-;2310:39;;:2;:39;:::i;:::-;2300:50;;:6;:50;:::i;:::-;2288:62;2182:175;-1:-1:-1;;;2182:175:2:o;1001:439:36:-;1219:12;1233:17;1254:5;:10;;1288;1300:4;1306:2;1310:5;1265:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1254:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:99;;;;1335:7;:57;;;;-1:-1:-1;1347:11:36;;:16;;:44;;;1378:4;1367:24;;;;;;;;;;;;:::i;:::-;1327:106;;;;-1:-1:-1;;;1327:106:36;;;;;;;:::i;:::-;1001:439;;;;;;:::o;907:529:2:-;1023:21;1046:17;1129:6;1086:5;1079:23;;;1111:4;1118:7;1079:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;1075:136;;;1151:49;;;;;:21;;;;;;:49;;1173:7;;1182:17;;1151:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1075:136;1238:44;;;;;1222:10;;1238:29;;;;;;:44;;1268:5;;1275:6;;1238:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1336:44:2;;;;;1221:61;;-1:-1:-1;1336:40:2;;;;;;:44;;1221:61;;1336:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1305:124;;;;;1312:69;;-1:-1:-1;1305:87:2;;;;;;:124;;1414:4;;1305:124;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1293:136;;907:529;;;;;;;:::o;1875:956:0:-;2162:19;2195:20;2229:17;2301:189;2328:5;2347:11;2372:18;2404:19;2437:14;2465:15;2301:13;:189::i;:::-;2271:219;;;;;;;;2501:12;2528:98;2588:4;2559:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2607:5;2614:11;2528:22;:98::i;:::-;2501:125;;2636:53;2664:5;2671:4;2677:11;2636:27;:53::i;:::-;2699:76;2731:11;2744:10;2756:4;2762:12;2699:31;:76::i;:::-;2797:27;;;;;:23;;;;;;:27;;2821:2;;2797:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2785:39;;1875:956;;;;;;;;;;;;:::o;1442:304:2:-;1604:41;;;;;:29;;;;;;:41;;1634:2;;1638:6;;1604:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1655:84;1683:8;1693:2;1704:8;1697:26;;;1732:4;1697:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1655:27;:84::i;:::-;1442:304;;;;;:::o;437:1432:0:-;651:15;668;695;750:4;721:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;833:48;;;;;695:72;;-1:-1:-1;893:1:0;;833:62;:32;;;;;:48;;866:6;;874;;833:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;829:144;;;911:51;;;;;:35;;;;;;:51;;947:6;;955;;911:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;829:144;983:16;1001;1021:60;1056:7;1066:6;1074;1021:26;:60::i;:::-;982:99;;;;1095:8;1107:1;1095:13;:30;;;;-1:-1:-1;1112:13:0;;1095:30;1091:772;;;1163:14;;-1:-1:-1;1179:14:0;;-1:-1:-1;1091:772:0;;;1225:22;1250:56;1271:14;1287:8;1297;1250:20;:56::i;:::-;1225:81;;1342:14;1324;:32;1320:533;;1402:10;1384:14;:28;;1376:62;;;;-1:-1:-1;;;1376:62:0;;;;;;;:::i;:::-;1478:14;;-1:-1:-1;1494:14:0;-1:-1:-1;1494:14:0;1320:533;;;1548:22;1573:56;1594:14;1610:8;1620;1573:20;:56::i;:::-;1548:81;;1672:14;1654;:32;;1647:40;;;;;;;;;;;;1731:10;1713:14;:28;;1705:62;;;;-1:-1:-1;;;1705:62:0;;;;;;;:::i;:::-;1807:14;-1:-1:-1;1823:14:0;;-1:-1:-1;1320:533:0;1091:772;;437:1432;;;;;;;;;;;;:::o;764:708:32:-;883:12;908:14;924;942:26;953:6;961;942:10;:26::i;:::-;907:61;;;;1178:7;1242:6;1250;1225:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1215:43;;;;;;1095:306;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1060:363;;1095:306;1060:363;;;;;764:708;-1:-1:-1;;;;;;764:708:32:o;605:390:36:-;785:12;799:17;820:5;:10;;854;866:2;870:5;831:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:93;;;;895:7;:57;;;;-1:-1:-1;907:11:36;;:16;;:44;;;938:4;927:24;;;;;;;;;;;;:::i;:::-;887:101;;;;-1:-1:-1;;;887:101:36;;;;;;;:::i;1446:197::-;1558:12;;;1518;1558;;;;;;;;;1536:7;;;;1551:5;;1536:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:54;;;1589:7;1581:55;;;;-1:-1:-1;;;1581:55:36;;;;;;;:::i;:::-;1446:197;;;:::o;5507:1450:0:-;5683:18;5703:20;5735:19;5794:4;5765:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5735:80;;5826:27;5863:10;5883:16;5909:13;6021:7;5997:100;;;;;;;;;;;;:::i;:::-;5933:164;;-1:-1:-1;5933:164:0;;-1:-1:-1;5933:164:0;;-1:-1:-1;5933:164:0;;-1:-1:-1;5933:164:0;-1:-1:-1;6108:17:0;5933:164;6108:7;:17::i;:::-;6144:31;6164:10;6144:19;:31::i;:::-;:36;:61;;6200:5;6144:61;;;6183:14;:5;6191:6;6183:14;:::i;:::-;6136:69;;6245:240;6311:10;6289:49;;;6339:6;6289:57;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6273:74;;;6362:11;6387:5;6406:19;6439:10;6463:12;6245:13;:240::i;:::-;6216:269;;;;;;;;6504:12;6531:98;6591:4;6562:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6610:5;6617:11;6531:22;:98::i;:::-;6504:125;;6639:52;6667:5;6674:4;6680:10;6639:27;:52::i;:::-;6701:70;6733:11;6746:4;6752;6758:12;6701:31;:70::i;:::-;6781:27;;;;;:23;;;;;;:27;;6805:2;;6781:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6900:1:0;6878:18;6886:10;6878:5;:18;:::i;:::-;6870:26;;;6869:32;6865:85;;;6903:47;6931:5;6938:4;6944:5;6903:27;:47::i;:::-;5507:1450;;;;;;;;;;;;;;:::o;1527:429:32:-;1650:16;1668;1697:14;1717:26;1728:6;1736;1717:10;:26::i;:::-;1696:47;;;1754:16;1772;1807:32;1815:7;1824:6;1832;1807:7;:32::i;:::-;1794:58;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1753:101;;;;;;;;;1897:6;1887:16;;:6;:16;;;:62;;1930:8;1940;1887:62;;;1907:8;1917;1887:62;1864:85;;;;-1:-1:-1;1527:429:32;-1:-1:-1;;;;;;;1527:429:32:o;2066:355::-;2187:15;2232:1;2222:7;:11;2214:59;;;;-1:-1:-1;;;2214:59:32;;;;;;;:::i;:::-;2302:1;2291:8;:12;:28;;;;;2318:1;2307:8;:12;2291:28;2283:79;;;;-1:-1:-1;;;2283:79:32;;;;;;;:::i;:::-;2406:8;2382:21;:7;2394:8;2382:11;:21::i;:::-;:32;;;;:::i;334:341::-;409:14;425;469:6;459:16;;:6;:16;;;;451:64;;;;-1:-1:-1;;;451:64:32;;;;;;;:::i;:::-;553:6;544:15;;:6;:15;;;:53;;582:6;590;544:53;;;563:6;571;544:53;525:72;;-1:-1:-1;525:72:32;-1:-1:-1;615:20:32;;;607:61;;;;-1:-1:-1;;;607:61:32;;;;;;;:::i;:::-;334:341;;;;;:::o;514:63:2:-;565:8;454:15;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;514:63;;:::o;2909:290::-;3005:7;3042:10;3032:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:32:2;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;3028:165;;-1:-1:-1;3180:2:2;3173:9;;3028:165;3113:8;3125:1;3113:13;:28;;3133:8;3113:28;;;3129:1;3113:28;3106:35;;;;;458:140:35;510:6;536;;;:30;;-1:-1:-1;565:1:35;560;551:5;560:1;565;551:5;:::i;:::-;547:9;-1:-1:-1;546:15:35;;547:9;546:15;:::i;:::-;:20;536:30;528:63;;;;-1:-1:-1;;;528:63:35;;;;;;;:::i;:::-;458:140;;;;:::o;14:404:38:-;;;147:3;140:4;132:6;128:17;124:27;114:2;;172:8;162;155:26;114:2;-1:-1:-1;202:20:38;;245:18;234:30;;231:2;;;284:8;274;267:26;231:2;328:4;320:6;316:17;304:29;;391:3;384:4;376;368:6;364:17;356:6;352:30;348:41;345:50;342:2;;;408:1;405;398:12;423:377;;;540:3;533:4;525:6;521:17;517:27;507:2;;565:8;555;548:26;507:2;-1:-1:-1;595:20:38;;638:18;627:30;;624:2;;;677:8;667;660:26;624:2;721:4;713:6;709:17;697:29;;773:3;766:4;757:6;749;745:19;741:30;738:39;735:2;;;790:1;787;780:12;805:190;886:13;;939:30;928:42;;918:53;;908:2;;985:1;982;975:12;1000:263;;1123:2;1111:9;1102:7;1098:23;1094:32;1091:2;;;1144:6;1136;1129:22;1091:2;1181:9;1175:16;1200:33;1227:5;1200:33;:::i;1268:1396::-;;;;;;;;;1537:3;1525:9;1516:7;1512:23;1508:33;1505:2;;;1559:6;1551;1544:22;1505:2;1603:9;1590:23;1622:33;1649:5;1622:33;:::i;:::-;1674:5;-1:-1:-1;1731:2:38;1716:18;;1703:32;1744:35;1703:32;1744:35;:::i;:::-;1798:7;-1:-1:-1;1856:2:38;1841:18;;1828:32;1879:18;1909:14;;;1906:2;;;1941:6;1933;1926:22;1906:2;1985:76;2053:7;2044:6;2033:9;2029:22;1985:76;:::i;:::-;2080:8;;-1:-1:-1;1959:102:38;-1:-1:-1;2168:2:38;2153:18;;2140:32;;-1:-1:-1;2184:16:38;;;2181:2;;;2218:6;2210;2203:22;2181:2;2262:78;2332:7;2321:8;2310:9;2306:24;2262:78;:::i;:::-;2359:8;;-1:-1:-1;2236:104:38;-1:-1:-1;2447:3:38;2432:19;;2419:33;;-1:-1:-1;2464:16:38;;;2461:2;;;2498:6;2490;2483:22;2461:2;;2542:62;2596:7;2585:8;2574:9;2570:24;2542:62;:::i;:::-;1495:1169;;;;-1:-1:-1;1495:1169:38;;-1:-1:-1;1495:1169:38;;;;;;2623:8;-1:-1:-1;;;1495:1169:38:o;2669:849::-;;;;;;;2868:3;2856:9;2847:7;2843:23;2839:33;2836:2;;;2890:6;2882;2875:22;2836:2;2934:9;2921:23;2953:33;2980:5;2953:33;:::i;:::-;3005:5;-1:-1:-1;3062:2:38;3047:18;;3034:32;3075:35;3034:32;3075:35;:::i;:::-;3129:7;-1:-1:-1;3183:2:38;3168:18;;3155:32;;-1:-1:-1;3234:2:38;3219:18;;3206:32;;-1:-1:-1;3289:3:38;3274:19;;3261:33;3317:18;3306:30;;3303:2;;;3354:6;3346;3339:22;3303:2;3398:60;3450:7;3441:6;3430:9;3426:22;3398:60;:::i;:::-;2826:692;;;;-1:-1:-1;2826:692:38;;-1:-1:-1;2826:692:38;;3477:8;;2826:692;-1:-1:-1;;;2826:692:38:o;3523:746::-;;;;;;;;3737:3;3725:9;3716:7;3712:23;3708:33;3705:2;;;3759:6;3751;3744:22;3705:2;3803:9;3790:23;3822:33;3849:5;3822:33;:::i;:::-;3874:5;-1:-1:-1;3926:2:38;3911:18;;3898:32;;-1:-1:-1;3977:2:38;3962:18;;3949:32;;-1:-1:-1;4028:2:38;4013:18;;4000:32;;-1:-1:-1;4079:3:38;4064:19;;4051:33;;-1:-1:-1;4136:3:38;4121:19;;4108:33;4150:35;4108:33;4150:35;:::i;:::-;4204:7;4194:17;;;4258:3;4247:9;4243:19;4230:33;4220:43;;3695:574;;;;;;;;;;:::o;4274:297::-;;4394:2;4382:9;4373:7;4369:23;4365:32;4362:2;;;4415:6;4407;4400:22;4362:2;4452:9;4446:16;4505:5;4498:13;4491:21;4484:5;4481:32;4471:2;;4532:6;4524;4517:22;4576:352;;4687:2;4675:9;4666:7;4662:23;4658:32;4655:2;;;4708:6;4700;4693:22;4655:2;4752:9;4739:23;4802:66;4795:5;4791:78;4784:5;4781:89;4771:2;;4889:6;4881;4874:22;6107:474;;;;6263:2;6251:9;6242:7;6238:23;6234:32;6231:2;;;6284:6;6276;6269:22;6231:2;6312:42;6344:9;6312:42;:::i;:::-;6302:52;;6373:51;6420:2;6409:9;6405:18;6373:51;:::i;:::-;6363:61;;6467:2;6456:9;6452:18;6446:25;6511:10;6504:5;6500:22;6493:5;6490:33;6480:2;;6542:6;6534;6527:22;6480:2;6570:5;6560:15;;;6221:360;;;;;:::o;6586:194::-;;6709:2;6697:9;6688:7;6684:23;6680:32;6677:2;;;6730:6;6722;6715:22;6677:2;-1:-1:-1;6758:16:38;;6667:113;-1:-1:-1;6667:113:38:o;6785:327::-;;;6914:2;6902:9;6893:7;6889:23;6885:32;6882:2;;;6935:6;6927;6920:22;6882:2;6976:9;6963:23;6953:33;;7036:2;7025:9;7021:18;7008:32;7049:33;7076:5;7049:33;:::i;:::-;7101:5;7091:15;;;6872:240;;;;;:::o;7117:324::-;;;7257:2;7245:9;7236:7;7232:23;7228:32;7225:2;;;7278:6;7270;7263:22;7225:2;7312:9;7306:16;7296:26;;7365:2;7354:9;7350:18;7344:25;7378:33;7405:5;7378:33;:::i;7446:1084::-;;;7584:2;7572:9;7563:7;7559:23;7555:32;7552:2;;;7605:6;7597;7590:22;7552:2;7646:9;7633:23;7623:33;;7675:2;7728;7717:9;7713:18;7700:32;7751:18;7792:2;7784:6;7781:14;7778:2;;;7813:6;7805;7798:22;7778:2;7856:6;7845:9;7841:22;7831:32;;7901:7;7894:4;7890:2;7886:13;7882:27;7872:2;;7928:6;7920;7913:22;7872:2;7969;7956:16;7991:2;7987;7984:10;7981:2;;;7997:18;;:::i;:::-;8046:2;8040:9;8181:2;8111:66;8104:4;8100:2;8096:13;8092:86;8084:6;8080:99;8076:108;8234:6;8222:10;8219:22;8214:2;8202:10;8199:18;8196:46;8193:2;;;8245:18;;:::i;:::-;8281:2;8274:22;8305:18;;;8342:11;;;8338:20;;8335:33;-1:-1:-1;8332:2:38;;;8386:6;8378;8371:22;8332:2;8447;8442;8438;8434:11;8429:2;8421:6;8417:15;8404:46;8492:6;8487:2;8482;8474:6;8470:15;8466:24;8459:40;8518:6;8508:16;;;;;;;7542:988;;;;;:::o;8535:517::-;;;;;;8734:3;8722:9;8713:7;8709:23;8705:33;8702:2;;;8756:6;8748;8741:22;8702:2;8790:9;8784:16;8774:26;;8840:2;8829:9;8825:18;8819:25;8809:35;;8884:2;8873:9;8869:18;8863:25;8853:35;;8931:2;8920:9;8916:18;8910:25;8944:33;8971:5;8944:33;:::i;:::-;8996:5;8986:15;;;9041:3;9030:9;9026:19;9020:26;9010:36;;8692:360;;;;;;;;:::o;9057:533::-;;;;;;9237:3;9225:9;9216:7;9212:23;9208:33;9205:2;;;9259:6;9251;9244:22;9205:2;9300:9;9287:23;9277:33;;9357:2;9346:9;9342:18;9329:32;9319:42;;9408:2;9397:9;9393:18;9380:32;9370:42;;9462:2;9451:9;9447:18;9434:32;9475:33;9502:5;9475:33;:::i;:::-;9195:395;;;;-1:-1:-1;9195:395:38;;9579:3;9564:19;9551:33;;9195:395;-1:-1:-1;;9195:395:38:o;9595:368::-;9762:66;9857:2;9853:15;;;9849:24;;9837:37;;9908:15;;;;9904:24;9899:2;9890:12;;9883:46;9954:2;9945:12;;9742:221::o;9968:430::-;;10135:6;10129:13;10160:3;10172:129;10186:6;10183:1;10180:13;10172:129;;;10284:4;10268:14;;;10264:25;;10258:32;10245:11;;;10238:53;10201:12;10172:129;;;10319:6;10316:1;10313:13;10310:2;;;10354:3;10345:6;10340:3;10336:16;10329:29;10310:2;-1:-1:-1;10376:16:38;;;;;10105:293;-1:-1:-1;;10105:293:38:o;10403:724::-;10774:66;10762:79;;10878:2;10874:15;;;;10891:66;10870:88;10866:1;10857:11;;10850:109;10984:2;10975:12;;10968:28;11026:66;11021:2;11012:12;;11005:88;11118:2;11109:12;;10752:375::o;11132:226::-;11308:42;11296:55;;;;11278:74;;11266:2;11251:18;;11233:125::o;11363:327::-;11547:42;11616:15;;;11598:34;;11668:15;;11663:2;11648:18;;11641:43;11525:2;11510:18;;11492:198::o;11695:398::-;11907:42;11976:15;;;11958:34;;12028:15;;;;12023:2;12008:18;;12001:43;12075:2;12060:18;;12053:34;;;;11885:2;11870:18;;11852:241::o;12098:297::-;12302:42;12290:55;;;;12272:74;;12377:2;12362:18;;12355:34;12260:2;12245:18;;12227:168::o;12400:187::-;12565:14;;12558:22;12540:41;;12528:2;12513:18;;12495:92::o;12592:248::-;12766:66;12754:79;;;;12736:98;;12724:2;12709:18;;12691:149::o;12845:355::-;13047:2;13029:21;;;13086:2;13066:18;;;13059:30;13125:33;13120:2;13105:18;;13098:61;13191:2;13176:18;;13019:181::o;13205:344::-;13407:2;13389:21;;;13446:2;13426:18;;;13419:30;13485:22;13480:2;13465:18;;13458:50;13540:2;13525:18;;13379:170::o;13554:399::-;13756:2;13738:21;;;13795:2;13775:18;;;13768:30;13834:34;13829:2;13814:18;;13807:62;13905:5;13900:2;13885:18;;13878:33;13943:3;13928:19;;13728:225::o;13958:345::-;14160:2;14142:21;;;14199:2;14179:18;;;14172:30;14238:23;14233:2;14218:18;;14211:51;14294:2;14279:18;;14132:171::o;14308:340::-;14510:2;14492:21;;;14549:2;14529:18;;;14522:30;14588:18;14583:2;14568:18;;14561:46;14639:2;14624:18;;14482:166::o;14653:399::-;14855:2;14837:21;;;14894:2;14874:18;;;14867:30;14933:34;14928:2;14913:18;;14906:62;15004:5;14999:2;14984:18;;14977:33;15042:3;15027:19;;14827:225::o;15057:345::-;15259:2;15241:21;;;15298:2;15278:18;;;15271:30;15337:23;15332:2;15317:18;;15310:51;15393:2;15378:18;;15231:171::o;15407:399::-;15609:2;15591:21;;;15648:2;15628:18;;;15621:30;15687:34;15682:2;15667:18;;15660:62;15758:5;15753:2;15738:18;;15731:33;15796:3;15781:19;;15581:225::o;15811:402::-;16013:2;15995:21;;;16052:2;16032:18;;;16025:30;16091:34;16086:2;16071:18;;16064:62;16162:8;16157:2;16142:18;;16135:36;16203:3;16188:19;;15985:228::o;16218:400::-;16420:2;16402:21;;;16459:2;16439:18;;;16432:30;16498:34;16493:2;16478:18;;16471:62;16569:6;16564:2;16549:18;;16542:34;16608:3;16593:19;;16392:226::o;16623:352::-;16825:2;16807:21;;;16864:2;16844:18;;;16837:30;16903;16898:2;16883:18;;16876:58;16966:2;16951:18;;16797:178::o;16980:177::-;17126:25;;;17114:2;17099:18;;17081:76::o;17162:248::-;17336:25;;;17392:2;17377:18;;17370:34;17324:2;17309:18;;17291:119::o;17415:319::-;17617:25;;;17673:2;17658:18;;17651:34;;;;17716:2;17701:18;;17694:34;17605:2;17590:18;;17572:162::o;17739:274::-;;17805:1;17795:2;;17840:77;17837:1;17830:88;17941:4;17938:1;17931:15;17969:4;17966:1;17959:15;17795:2;-1:-1:-1;17998:9:38;;17785:228::o;18018:453::-;18114:6;18137:5;18151:314;18200:1;18237:2;18227:8;18224:16;18214:2;;18244:5;;;18214:2;18285:4;18280:3;18276:14;18270:4;18267:24;18264:2;;;18294:18;;:::i;:::-;18344:2;18334:8;18330:17;18327:2;;;18359:16;;;;18327:2;18438:17;;;;;18398:15;;18151:314;;;18095:376;;;;;;;:::o;18476:199::-;;18565:104;18602:66;18592:8;18586:4;18680:922;18764:8;18754:2;;-1:-1:-1;18805:1:38;18819:5;;18754:2;18853:4;18843:2;;-1:-1:-1;18890:1:38;18904:5;;18843:2;18935:4;18953:1;18948:59;;;;19021:1;19016:183;;;;18928:271;;18948:59;18978:1;18969:10;;18992:5;;;19016:183;19053:3;19043:8;19040:17;19037:2;;;19060:18;;:::i;:::-;19116:1;19106:8;19102:16;19093:25;;19144:3;19137:5;19134:14;19131:2;;;19151:18;;:::i;:::-;19184:5;;;18928:271;;19283:2;19273:8;19270:16;19264:3;19258:4;19255:13;19251:36;19245:2;19235:8;19232:16;19227:2;19221:4;19218:12;19214:35;19211:77;19208:2;;;-1:-1:-1;19320:19:38;;;19355:14;;;19352:2;;;19372:18;;:::i;:::-;19405:5;;19208:2;19452:42;19490:3;19480:8;19474:4;19471:1;19452:42;:::i;:::-;19527:6;19522:3;19518:16;19509:7;19506:29;19503:2;;;19538:18;;:::i;:::-;19576:20;;18744:858;-1:-1:-1;;;;18744:858:38:o;19607:228::-;;19773:1;19705:66;19701:74;19698:1;19695:81;19690:1;19683:9;19676:17;19672:105;19669:2;;;19780:18;;:::i;:::-;-1:-1:-1;19820:9:38;;19659:176::o;19840:125::-;;19908:1;19905;19902:8;19899:2;;;19913:18;;:::i;:::-;-1:-1:-1;19950:9:38;;19889:76::o;19970:184::-;20022:77;20019:1;20012:88;20119:4;20116:1;20109:15;20143:4;20140:1;20133:15;20159:184;20211:77;20208:1;20201:88;20308:4;20305:1;20298:15;20332:4;20329:1;20322:15;20348:156;20436:42;20429:5;20425:54;20418:5;20415:65;20405:2;;20494:1;20491;20484:12;20405:2;20395:109;:::o"
    },
    "contracts/MateriaLiquidityRemover.sol:MateriaLiquidityRemover": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "wrapper",
              "type": "address"
            }
          ],
          "name": "_wrapEth",
          "outputs": [
            {
              "internalType": "address",
              "name": "interoperable",
              "type": "address"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "name": "onERC1155BatchReceived",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "name": "onERC1155Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountBridge",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityAndUnwrap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ethAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountBridge",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountEth",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermitAndUnwrap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "608060405234801561001057600080fd5b5061227d806100206000396000f3fe6080604052600436106100b15760003560e01c806396c92f5e11610069578063ee1fae3c1161004e578063ee1fae3c146101c9578063f23a6e61146101e9578063f717cd6d14610204576100b1565b806396c92f5e1461016e578063bc197c811461019c576100b1565b80633d0c2a341161009a5780633d0c2a341461010e5780635909889d1461012e578063678700e01461014e576100b1565b806301ffc9a7146100b6578063104870fd146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d1366004611ce8565b610224565b6040516100e39190612005565b60405180910390f35b3480156100f857600080fd5b5061010c610107366004611c37565b61022c565b005b34801561011a57600080fd5b5061010c610129366004611bda565b6103fa565b34801561013a57600080fd5b5061010c610149366004611c37565b61041c565b34801561015a57600080fd5b5061010c610169366004611dfe565b610444565b34801561017a57600080fd5b5061018e610189366004611bda565b610664565b6040516100e3929190612213565b3480156101a857600080fd5b506101bc6101b7366004611aa5565b610a8e565b6040516100e39190612010565b3480156101d557600080fd5b5061018e6101e4366004611db6565b610a95565b3480156101f557600080fd5b506101bc6101b7366004611b60565b610217610212366004611d40565b610e96565b6040516100e39190611f73565b60005b919050565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102dc57600080fd5b505afa1580156102f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103149190611a82565b9050600061032383838f610f13565b9050600087610332578c610354565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063d505accf906103a8903390309086908f908e908e908e90600401611fab565b600060405180830381600087803b1580156103c257600080fd5b505af11580156103d6573d6000803e3d6000fd5b505050506103e88e8e8e8e8e8e610664565b50505050505050505050505050505050565b610408868686868686610664565b50506104148683610fa1565b505050505050565b61042e8a8a8a8a308a8a8a8a8a61022c565b6104388a87610fa1565b50505050505050505050565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561047f57600080fd5b505afa158015610493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b79190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052c9190611a82565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190611a82565b905060006105ba84846105b5600086611350565b610f13565b90506000886105c9578d6105eb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b9050816001600160a01b031663d505accf3330848e8d8d8d6040518863ffffffff1660e01b81526004016106259796959493929190611fab565b600060405180830381600087803b15801561063f57600080fd5b505af1158015610653573d6000803e3d6000fd5b505050506103e88e8d8f8e8e610a95565b60008082428110156106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120e2565b60405180910390fd5b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e657600080fd5b505afa1580156106fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071e9190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561075b57600080fd5b505afa15801561076f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107939190611a82565b905060008060006107a48e86611502565b9150915081610847576040517f0c0f6b710000000000000000000000000000000000000000000000000000000081526001600160a01b03861690630c0f6b71906107f290849060040161220a565b60206040518083038186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108429190611a82565b610849565b8d5b9d506108c6306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561088757600080fd5b505afa15801561089b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bf9190611a82565b8f86610f13565b92505050806001600160a01b03166323b872dd33838e6040518463ffffffff1660e01b81526004016108fa93929190611f87565b602060405180830381600087803b15801561091457600080fd5b505af1158015610928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094c9190611ccc565b50600080826001600160a01b03166389afcb448b6040518263ffffffff1660e01b815260040161097c9190611f73565b6040805180830381600087803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cd9190611d93565b9150915060006109dd8f8661163d565b509050846001600160a01b0316816001600160a01b031614610a00578183610a03565b82825b90995097508b891015610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612074565b8c881015610a7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120ab565b50505050505050965096945050505050565b6000806000fd5b6000808242811015610ad3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120e2565b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0e57600080fd5b505afa158015610b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b469190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8357600080fd5b505afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb9190611a82565b90506000610bca600084611350565b90506000610c49306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0a57600080fd5b505afa158015610c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c429190611a82565b8385610f13565b9050806001600160a01b03166323b872dd33838f6040518463ffffffff1660e01b8152600401610c7b93929190611f87565b602060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd9190611ccc565b50600080826001600160a01b03166389afcb44306040518263ffffffff1660e01b8152600401610cfd9190611f73565b6040805180830381600087803b158015610d1657600080fd5b505af1158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e9190611d93565b915091506000610d5e858761163d565b509050856001600160a01b0316816001600160a01b031614610d81578183610d84565b82825b909a5098508d8a1015610dc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612074565b8c891015610dfd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120ab565b610e08868d8c6116f4565b610e84306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4457600080fd5b505afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c9190611d28565b8a898f611810565b50505050505050509550959350505050565b6000816001600160a01b031663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190611d6f565b949350505050565b6000806000610f22858561163d565b91509150858282604051602001610f3a929190611e7f565b60405160208183030381529060405280519060200120604051602001610f61929190611ef2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610fdc57600080fd5b505afa158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110149190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105157600080fd5b505afa158015611065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110899190611a82565b90506000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190611a82565b905060008061110d8786611502565b915091508161111c57866111b1565b6040517f023b04b20000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063023b04b29061116190849060040161220a565b60206040518083038186803b15801561117957600080fd5b505afa15801561118d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b19190611a82565b965060006112368486886001600160a01b0316630c0f6b71866040518263ffffffff1660e01b81526004016111e6919061220a565b60206040518083038186803b1580156111fe57600080fd5b505afa158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b59190611a82565b90506112c08289836001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112699190611f73565b60206040518083038186803b15801561128157600080fd5b505afa158015611295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b99190611d28565b898b611899565b6113468588876001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112f19190611f73565b60206040518083038186803b15801561130957600080fd5b505afa15801561131d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113419190611d28565b6116f4565b5050505050505050565b60006001600160a01b03831661145357816001600160a01b0316630c0f6b71306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a857600080fd5b505afa1580156113bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e09190611d28565b6040518263ffffffff1660e01b81526004016113fc919061220a565b60206040518083038186803b15801561141457600080fd5b505afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c9190611a82565b90506114fc565b600061145f8484611502565b6040517f0c0f6b710000000000000000000000000000000000000000000000000000000081529092506001600160a01b0385169150630c0f6b71906114a890849060040161220a565b60206040518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f89190611a82565b9150505b92915050565b600080836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153e57600080fd5b505afa92505050801561158c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261158991810190611a82565b60015b611630576040517f1bf8ee70000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841690631bf8ee70906115d9908790600401611f73565b60206040518083038186803b1580156115f157600080fd5b505afa158015611605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116299190611d28565b9050611636565b50600191505b9250929050565b600080826001600160a01b0316846001600160a01b0316141561168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612119565b826001600160a01b0316846001600160a01b0316106116ac5782846116af565b83835b90925090506001600160a01b038216611636576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906121d3565b600080846001600160a01b031663a9059cbb8585604051602401611719929190611fec565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516117679190611eb9565b6000604051808303816000865af19150503d80600081146117a4576040519150601f19603f3d011682016040523d82523d6000602084013e6117a9565b606091505b50915091508180156117d35750805115806117d35750808060200190518101906117d39190611ccc565b611809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061203d565b5050505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab906118579087908790600401612213565b600060405180830381600087803b15801561187157600080fd5b505af1158015611885573d6000803e3d6000fd5b505050506118938184611943565b50505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab906118e09088908790600401612213565b600060405180830381600087803b1580156118fa57600080fd5b505af115801561190e573d6000803e3d6000fd5b505050506118098482866001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112f19190611f73565b604080516000808252602082019092526001600160a01b03841690839060405161196d9190611eb9565b60006040518083038185875af1925050503d80600081146119aa576040519150601f19603f3d011682016040523d82523d6000602084013e6119af565b606091505b50509050806119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612176565b505050565b60008083601f840112611a00578182fd5b50813567ffffffffffffffff811115611a17578182fd5b602083019150836020808302850101111561163657600080fd5b60008083601f840112611a42578182fd5b50813567ffffffffffffffff811115611a59578182fd5b60208301915083602082850101111561163657600080fd5b803560ff8116811461022757600080fd5b600060208284031215611a93578081fd5b8151611a9e81612221565b9392505050565b60008060008060008060008060a0898b031215611ac0578384fd5b8835611acb81612221565b97506020890135611adb81612221565b9650604089013567ffffffffffffffff80821115611af7578586fd5b611b038c838d016119ef565b909850965060608b0135915080821115611b1b578586fd5b611b278c838d016119ef565b909650945060808b0135915080821115611b3f578384fd5b50611b4c8b828c01611a31565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611b78578182fd5b8635611b8381612221565b95506020870135611b9381612221565b94506040870135935060608701359250608087013567ffffffffffffffff811115611bbc578283fd5b611bc889828a01611a31565b979a9699509497509295939492505050565b60008060008060008060c08789031215611bf2578182fd5b8635611bfd81612221565b95506020870135945060408701359350606087013592506080870135611c2281612221565b8092505060a087013590509295509295509295565b6000806000806000806000806000806101408b8d031215611c56578182fd5b8a35611c6181612221565b995060208b0135985060408b0135975060608b0135965060808b0135611c8681612221565b955060a08b0135945060c08b0135611c9d81612239565b9350611cab60e08c01611a71565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600060208284031215611cdd578081fd5b8151611a9e81612239565b600060208284031215611cf9578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a9e578182fd5b600060208284031215611d39578081fd5b5051919050565b60008060408385031215611d52578182fd5b823591506020830135611d6481612221565b809150509250929050565b60008060408385031215611d81578182fd5b825191506020830151611d6481612221565b60008060408385031215611da5578182fd5b505080516020909101519092909150565b600080600080600060a08688031215611dcd578283fd5b8535945060208601359350604086013592506060860135611ded81612221565b949793965091946080013592915050565b60008060008060008060008060006101208a8c031215611e1c578283fd5b8935985060208a0135975060408a0135965060608a0135611e3c81612221565b955060808a0135945060a08a0135611e5381612239565b9350611e6160c08b01611a71565b925060e08a013591506101008a013590509295985092959850929598565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015611ed95760208186018101518583015201611ebf565b81811115611ee75782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601a908201527f494e53554646494349454e545f4252494447455f414d4f554e54000000000000604082015260600190565b60208082526019908201527f494e53554646494349454e545f544f4b454e5f414d4f554e5400000000000000604082015260600190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b6001600160a01b038116811461223657600080fd5b50565b801515811461223657600080fdfea264697066735822122077216a0c8b23573a39668fac63e6b0f3cb300b9ce9410d4b50499c15e96d054b64736f6c63430008000033",
          "sourceMap": "297:6945:1:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "object": "6080604052600436106100b15760003560e01c806396c92f5e11610069578063ee1fae3c1161004e578063ee1fae3c146101c9578063f23a6e61146101e9578063f717cd6d14610204576100b1565b806396c92f5e1461016e578063bc197c811461019c576100b1565b80633d0c2a341161009a5780633d0c2a341461010e5780635909889d1461012e578063678700e01461014e576100b1565b806301ffc9a7146100b6578063104870fd146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d1366004611ce8565b610224565b6040516100e39190612005565b60405180910390f35b3480156100f857600080fd5b5061010c610107366004611c37565b61022c565b005b34801561011a57600080fd5b5061010c610129366004611bda565b6103fa565b34801561013a57600080fd5b5061010c610149366004611c37565b61041c565b34801561015a57600080fd5b5061010c610169366004611dfe565b610444565b34801561017a57600080fd5b5061018e610189366004611bda565b610664565b6040516100e3929190612213565b3480156101a857600080fd5b506101bc6101b7366004611aa5565b610a8e565b6040516100e39190612010565b3480156101d557600080fd5b5061018e6101e4366004611db6565b610a95565b3480156101f557600080fd5b506101bc6101b7366004611b60565b610217610212366004611d40565b610e96565b6040516100e39190611f73565b60005b919050565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102dc57600080fd5b505afa1580156102f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103149190611a82565b9050600061032383838f610f13565b9050600087610332578c610354565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063d505accf906103a8903390309086908f908e908e908e90600401611fab565b600060405180830381600087803b1580156103c257600080fd5b505af11580156103d6573d6000803e3d6000fd5b505050506103e88e8e8e8e8e8e610664565b50505050505050505050505050505050565b610408868686868686610664565b50506104148683610fa1565b505050505050565b61042e8a8a8a8a308a8a8a8a8a61022c565b6104388a87610fa1565b50505050505050505050565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561047f57600080fd5b505afa158015610493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b79190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052c9190611a82565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190611a82565b905060006105ba84846105b5600086611350565b610f13565b90506000886105c9578d6105eb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b9050816001600160a01b031663d505accf3330848e8d8d8d6040518863ffffffff1660e01b81526004016106259796959493929190611fab565b600060405180830381600087803b15801561063f57600080fd5b505af1158015610653573d6000803e3d6000fd5b505050506103e88e8d8f8e8e610a95565b60008082428110156106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120e2565b60405180910390fd5b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e657600080fd5b505afa1580156106fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071e9190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561075b57600080fd5b505afa15801561076f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107939190611a82565b905060008060006107a48e86611502565b9150915081610847576040517f0c0f6b710000000000000000000000000000000000000000000000000000000081526001600160a01b03861690630c0f6b71906107f290849060040161220a565b60206040518083038186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108429190611a82565b610849565b8d5b9d506108c6306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561088757600080fd5b505afa15801561089b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bf9190611a82565b8f86610f13565b92505050806001600160a01b03166323b872dd33838e6040518463ffffffff1660e01b81526004016108fa93929190611f87565b602060405180830381600087803b15801561091457600080fd5b505af1158015610928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094c9190611ccc565b50600080826001600160a01b03166389afcb448b6040518263ffffffff1660e01b815260040161097c9190611f73565b6040805180830381600087803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cd9190611d93565b9150915060006109dd8f8661163d565b509050846001600160a01b0316816001600160a01b031614610a00578183610a03565b82825b90995097508b891015610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612074565b8c881015610a7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120ab565b50505050505050965096945050505050565b6000806000fd5b6000808242811015610ad3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120e2565b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0e57600080fd5b505afa158015610b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b469190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8357600080fd5b505afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb9190611a82565b90506000610bca600084611350565b90506000610c49306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0a57600080fd5b505afa158015610c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c429190611a82565b8385610f13565b9050806001600160a01b03166323b872dd33838f6040518463ffffffff1660e01b8152600401610c7b93929190611f87565b602060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd9190611ccc565b50600080826001600160a01b03166389afcb44306040518263ffffffff1660e01b8152600401610cfd9190611f73565b6040805180830381600087803b158015610d1657600080fd5b505af1158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e9190611d93565b915091506000610d5e858761163d565b509050856001600160a01b0316816001600160a01b031614610d81578183610d84565b82825b909a5098508d8a1015610dc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612074565b8c891015610dfd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120ab565b610e08868d8c6116f4565b610e84306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4457600080fd5b505afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c9190611d28565b8a898f611810565b50505050505050509550959350505050565b6000816001600160a01b031663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190611d6f565b949350505050565b6000806000610f22858561163d565b91509150858282604051602001610f3a929190611e7f565b60405160208183030381529060405280519060200120604051602001610f61929190611ef2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610fdc57600080fd5b505afa158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110149190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105157600080fd5b505afa158015611065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110899190611a82565b90506000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190611a82565b905060008061110d8786611502565b915091508161111c57866111b1565b6040517f023b04b20000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063023b04b29061116190849060040161220a565b60206040518083038186803b15801561117957600080fd5b505afa15801561118d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b19190611a82565b965060006112368486886001600160a01b0316630c0f6b71866040518263ffffffff1660e01b81526004016111e6919061220a565b60206040518083038186803b1580156111fe57600080fd5b505afa158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b59190611a82565b90506112c08289836001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112699190611f73565b60206040518083038186803b15801561128157600080fd5b505afa158015611295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b99190611d28565b898b611899565b6113468588876001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112f19190611f73565b60206040518083038186803b15801561130957600080fd5b505afa15801561131d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113419190611d28565b6116f4565b5050505050505050565b60006001600160a01b03831661145357816001600160a01b0316630c0f6b71306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a857600080fd5b505afa1580156113bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e09190611d28565b6040518263ffffffff1660e01b81526004016113fc919061220a565b60206040518083038186803b15801561141457600080fd5b505afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c9190611a82565b90506114fc565b600061145f8484611502565b6040517f0c0f6b710000000000000000000000000000000000000000000000000000000081529092506001600160a01b0385169150630c0f6b71906114a890849060040161220a565b60206040518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f89190611a82565b9150505b92915050565b600080836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153e57600080fd5b505afa92505050801561158c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261158991810190611a82565b60015b611630576040517f1bf8ee70000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841690631bf8ee70906115d9908790600401611f73565b60206040518083038186803b1580156115f157600080fd5b505afa158015611605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116299190611d28565b9050611636565b50600191505b9250929050565b600080826001600160a01b0316846001600160a01b0316141561168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612119565b826001600160a01b0316846001600160a01b0316106116ac5782846116af565b83835b90925090506001600160a01b038216611636576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906121d3565b600080846001600160a01b031663a9059cbb8585604051602401611719929190611fec565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516117679190611eb9565b6000604051808303816000865af19150503d80600081146117a4576040519150601f19603f3d011682016040523d82523d6000602084013e6117a9565b606091505b50915091508180156117d35750805115806117d35750808060200190518101906117d39190611ccc565b611809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061203d565b5050505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab906118579087908790600401612213565b600060405180830381600087803b15801561187157600080fd5b505af1158015611885573d6000803e3d6000fd5b505050506118938184611943565b50505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab906118e09088908790600401612213565b600060405180830381600087803b1580156118fa57600080fd5b505af115801561190e573d6000803e3d6000fd5b505050506118098482866001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112f19190611f73565b604080516000808252602082019092526001600160a01b03841690839060405161196d9190611eb9565b60006040518083038185875af1925050503d80600081146119aa576040519150601f19603f3d011682016040523d82523d6000602084013e6119af565b606091505b50509050806119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612176565b505050565b60008083601f840112611a00578182fd5b50813567ffffffffffffffff811115611a17578182fd5b602083019150836020808302850101111561163657600080fd5b60008083601f840112611a42578182fd5b50813567ffffffffffffffff811115611a59578182fd5b60208301915083602082850101111561163657600080fd5b803560ff8116811461022757600080fd5b600060208284031215611a93578081fd5b8151611a9e81612221565b9392505050565b60008060008060008060008060a0898b031215611ac0578384fd5b8835611acb81612221565b97506020890135611adb81612221565b9650604089013567ffffffffffffffff80821115611af7578586fd5b611b038c838d016119ef565b909850965060608b0135915080821115611b1b578586fd5b611b278c838d016119ef565b909650945060808b0135915080821115611b3f578384fd5b50611b4c8b828c01611a31565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611b78578182fd5b8635611b8381612221565b95506020870135611b9381612221565b94506040870135935060608701359250608087013567ffffffffffffffff811115611bbc578283fd5b611bc889828a01611a31565b979a9699509497509295939492505050565b60008060008060008060c08789031215611bf2578182fd5b8635611bfd81612221565b95506020870135945060408701359350606087013592506080870135611c2281612221565b8092505060a087013590509295509295509295565b6000806000806000806000806000806101408b8d031215611c56578182fd5b8a35611c6181612221565b995060208b0135985060408b0135975060608b0135965060808b0135611c8681612221565b955060a08b0135945060c08b0135611c9d81612239565b9350611cab60e08c01611a71565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600060208284031215611cdd578081fd5b8151611a9e81612239565b600060208284031215611cf9578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a9e578182fd5b600060208284031215611d39578081fd5b5051919050565b60008060408385031215611d52578182fd5b823591506020830135611d6481612221565b809150509250929050565b60008060408385031215611d81578182fd5b825191506020830151611d6481612221565b60008060408385031215611da5578182fd5b505080516020909101519092909150565b600080600080600060a08688031215611dcd578283fd5b8535945060208601359350604086013592506060860135611ded81612221565b949793965091946080013592915050565b60008060008060008060008060006101208a8c031215611e1c578283fd5b8935985060208a0135975060408a0135965060608a0135611e3c81612221565b955060808a0135945060a08a0135611e5381612239565b9350611e6160c08b01611a71565b925060e08a013591506101008a013590509295985092959850929598565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015611ed95760208186018101518583015201611ebf565b81811115611ee75782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601a908201527f494e53554646494349454e545f4252494447455f414d4f554e54000000000000604082015260600190565b60208082526019908201527f494e53554646494349454e545f544f4b454e5f414d4f554e5400000000000000604082015260600190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b6001600160a01b038116811461223657600080fd5b50565b801515811461223657600080fdfea264697066735822122077216a0c8b23573a39668fac63e6b0f3cb300b9ce9410d4b50499c15e96d054b64736f6c63430008000033",
          "sourceMap": "297:6945:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7140:100;;;;;;;;;;-1:-1:-1;7140:100:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3039:791;;;;;;;;;;-1:-1:-1;3039:791:1;;;;;:::i;:::-;;:::i;:::-;;4743:439;;;;;;;;;;-1:-1:-1;4743:439:1;;;;;:::i;:::-;;:::i;5188:619::-;;;;;;;;;;-1:-1:-1;5188:619:1;;;;;:::i;:::-;;:::i;3836:901::-;;;;;;;;;;-1:-1:-1;3836:901:1;;;;;:::i;:::-;;:::i;355:1315::-;;;;;;;;;;-1:-1:-1;355:1315:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;6919:215::-;;;;;;;;;;-1:-1:-1;6919:215:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1680:1353::-;;;;;;;;;;-1:-1:-1;1680:1353:1;;;;;:::i;:::-;;:::i;6725:188::-;;;;;;;;;;-1:-1:-1;6725:188:1;;;;;:::i;1992:184:2:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7140:100:1:-;7205:4;7140:100;;;;:::o;3039:791::-;3338:15;3393:4;-1:-1:-1;;;;;3364:43:1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3338:72;;3420:19;3479:4;-1:-1:-1;;;;;3450:47:1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3420:80;;3511:12;3526:51;3549:7;3558:11;3571:5;3526:22;:51::i;:::-;3511:66;;3587:13;3603:10;:42;;3636:9;3603:42;;;3616:17;3603:42;3655:78;;;;;3587:58;;-1:-1:-1;;;;;;3655:25:1;;;;;:78;;3681:10;;3701:4;;3587:58;;3715:8;;3725:1;;3728;;3731;;3655:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3743:80;3759:5;3766:9;3777:14;3793:15;3810:2;3814:8;3743:15;:80::i;:::-;;;3039:791;;;;;;;;;;;;;;:::o;4743:439::-;4965:162;4994:5;5013:9;5036:14;5064:15;5093:2;5109:8;4965:15;:162::i;:::-;;;5146:29;5165:5;5172:2;5146:18;:29::i;:::-;4743:439;;;;;;:::o;5188:619::-;5500:252;5539:5;5558:9;5581:14;5609:15;5646:4;5665:8;5687:10;5711:1;5726;5741;5500:25;:252::i;:::-;5771:29;5790:5;5797:2;5771:18;:29::i;:::-;5188:619;;;;;;;;;;:::o;3836:901::-;4115:15;4170:4;-1:-1:-1;;;;;4141:43:1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4115:72;;4197:19;4256:4;-1:-1:-1;;;;;4227:47:1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4197:80;;4287:20;4347:4;-1:-1:-1;;;;;4318:48:1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4287:82;;4380:12;4395:93;4418:7;4427:11;4440:47;4470:1;4474:12;4440:21;:47::i;:::-;4395:22;:93::i;:::-;4380:108;;4498:13;4514:10;:42;;4547:9;4514:42;;;4527:17;4514:42;4498:58;;4579:4;-1:-1:-1;;;;;4566:25:1;;4592:10;4612:4;4619:5;4626:8;4636:1;4639;4642;4566:78;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4654:76;4673:9;4684:15;4701:14;4717:2;4721:8;4654:18;:76::i;355:1315::-;580:20;602:19;561:8;454:15:2;442:8;:27;;434:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;633:20:1::1;693:4;-1:-1:-1::0;;;;;664:48:1::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;633:82;;725:19;784:4;-1:-1:-1::0;;;;;755:47:1::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;725:80;;815:12;853::::0;867:14:::1;885:31;896:5;903:12;885:10;:31::i;:::-;852:64;;;;938:7;:80;;964:53;::::0;;;;-1:-1:-1;;;;;964:45:1;::::1;::::0;::::1;::::0;:53:::1;::::0;1010:6;;964:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;938:80;;;948:5;938:80;930:88;;1039:98;1099:4;-1:-1:-1::0;;;;;1070:43:1::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1118:5;1125:11;1039:22;:98::i;:::-;1032:105;;500:1:2;;1171:4:1;-1:-1:-1::0;;;;;1158:31:1::1;;1190:10;1202:4;1208:9;1158:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1255:15;1272::::0;1304:4:::1;-1:-1:-1::0;;;;;1291:23:1::1;;1315:2;1291:27;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1254:64;;;;1329:14;1349:45;1375:5;1382:11;1349:25;:45::i;:::-;1328:66;;;1452:11;-1:-1:-1::0;;;;;1434:30:1::1;:6;-1:-1:-1::0;;;;;1434:30:1::1;;:72;;1489:7;1498;1434:72;;;1468:7;1477;1434:72;1404:102:::0;;-1:-1:-1;1404:102:1;-1:-1:-1;1524:31:1;;::::1;;1516:70;;;;;;;;;;;;:::i;:::-;1619:14;1604:11;:29;;1596:67;;;;;;;;;;;;:::i;:::-;500:1:2;;;;;;355:1315:1::0;;;;;;;;;;:::o;6919:215::-;7101:6;7119:8;;;1680:1353;1883:20;1905:17;1864:8;454:15:2;442:8;:27;;434:56;;;;;;;;;;;;:::i;:::-;1934:20:1::1;1994:4;-1:-1:-1::0;;;;;1965:48:1::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1934:82;;2026:19;2085:4;-1:-1:-1::0;;;;;2056:47:1::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2026:80;;2116:12;2131:47;2161:1;2165:12;2131:21;:47::i;:::-;2116:62;;2189:12;2216:97;2276:4;-1:-1:-1::0;;;;;2247:43:1::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2295:4;2301:11;2216:22;:97::i;:::-;2189:124;;2337:4;-1:-1:-1::0;;;;;2324:31:1::1;;2356:10;2368:4;2374:9;2324:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2421:15;2438::::0;2470:4:::1;-1:-1:-1::0;;;;;2457:23:1::1;;2489:4;2457:38;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2420:75;;;;2506:14;2526:53;2552:4;2566:11;2526:25;:53::i;:::-;2505:74;;;2635:11;-1:-1:-1::0;;;;;2617:30:1::1;:6;-1:-1:-1::0;;;;;2617:30:1::1;;:72;;2672:7;2681;2617:72;;;2651:7;2660;2617:72;2589:100:::0;;-1:-1:-1;2589:100:1;-1:-1:-1;2707:31:1;;::::1;;2699:70;;;;;;;;;;;;:::i;:::-;2800:12;2787:9;:25;;2779:63;;;;;;;;;;;;:::i;:::-;2852:58;2880:11;2893:2;2897:12;2852:27;:58::i;:::-;2920:106;2968:4;-1:-1:-1::0;;;;;2939:54:1::1;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2998:9;3009:12;3023:2;2920:10;:106::i;:::-;500:1:2;;;;;;;1680:1353:1::0;;;;;;;;;:::o;1992:184:2:-;2067:21;2136:7;-1:-1:-1;;;;;2120:32:2;;2160:6;2120:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2100:69;1992:184;-1:-1:-1;;;;1992:184:2:o;764:708:32:-;883:12;908:14;924;942:26;953:6;961;942:10;:26::i;:::-;907:61;;;;1178:7;1242:6;1250;1225:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1215:43;;;;;;1095:306;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1060:363;;1095:306;1060:363;;;;;764:708;-1:-1:-1;;;;;;764:708:32:o;5818:901:1:-;5891:20;5951:4;-1:-1:-1;;;;;5922:48:1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5891:82;;5983:19;6042:4;-1:-1:-1;;;;;6013:47:1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5983:80;;6073:15;6128:4;-1:-1:-1;;;;;6099:43:1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6073:72;;6156:12;6170:14;6188:31;6199:5;6206:12;6188:10;:31::i;:::-;6155:64;;;;6237:7;:62;;6294:5;6237:62;;;6247:44;;;;;-1:-1:-1;;;;;6247:36:1;;;;;:44;;6284:6;;6247:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6229:70;;6309:12;6324:108;6347:7;6356:11;6393:12;-1:-1:-1;;;;;6377:45:1;;6423:6;6377:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6324:108::-;6309:123;;6443:160;6469:6;6489:5;6521:4;-1:-1:-1;;;;;6508:28:1;;6545:4;6508:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6565:12;6591:2;6443:12;:160::i;:::-;6622:90;6650:11;6663:2;6674:11;-1:-1:-1;;;;;6667:29:1;;6705:4;6667:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6622:27;:90::i;:::-;5818:901;;;;;;;;:::o;2363:536:2:-;2449:21;-1:-1:-1;;;;;2486:19:2;;2482:411;;2576:7;-1:-1:-1;;;;;2560:40:2;;2659:4;-1:-1:-1;;;;;2630:54:2;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2560:145;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2519:200;;2482:411;;;2751:14;2769:26;2780:5;2787:7;2769:10;:26::i;:::-;2833:48;;;;;2748:47;;-1:-1:-1;;;;;;2833:40:2;;;-1:-1:-1;2833:40:2;;:48;;2748:47;;2833:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2809:73;;2482:411;;2363:536;;;;:::o;583:318::-;658:12;672:10;729:5;-1:-1:-1;;;;;698:51:2;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;698:53:2;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;694:201;;846:38;;;;;822:5;;-1:-1:-1;;;;;;846:31:2;;;;;:38;;878:5;;846:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;841:43;;694:201;;;;776:4;766:14;;694:201;583:318;;;;;:::o;334:341:32:-;409:14;425;469:6;-1:-1:-1;;;;;459:16:32;:6;-1:-1:-1;;;;;459:16:32;;;451:64;;;;;;;;;;;;:::i;:::-;553:6;-1:-1:-1;;;;;544:15:32;:6;-1:-1:-1;;;;;544:15:32;;:53;;582:6;590;544:53;;;563:6;571;544:53;525:72;;-1:-1:-1;525:72:32;-1:-1:-1;;;;;;615:20:32;;607:61;;;;;;;;;;;;:::i;605:390:36:-;785:12;799:17;820:5;-1:-1:-1;;;;;820:10:36;854;866:2;870:5;831:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:93;;;;895:7;:57;;;;-1:-1:-1;907:11:36;;:16;;:44;;;938:4;927:24;;;;;;;;;;;;:::i;:::-;887:101;;;;;;;;;;;;:::i;:::-;605:390;;;;;:::o;1752:234:2:-;1886:41;;;;;-1:-1:-1;;;;;1886:29:2;;;;;:41;;1916:2;;1920:6;;1886:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1937:42;1968:2;1972:6;1937:30;:42::i;:::-;1752:234;;;;:::o;1442:304::-;1604:41;;;;;-1:-1:-1;;;;;1604:29:2;;;;;:41;;1634:2;;1638:6;;1604:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1655:84;1683:8;1693:2;1704:8;-1:-1:-1;;;;;1697:26:2;;1732:4;1697:41;;;;;;;;;;;;;;;:::i;1446:197:36:-;1558:12;;;1518;1558;;;;;;;;;-1:-1:-1;;;;;1536:7:36;;;1551:5;;1536:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:54;;;1589:7;1581:55;;;;;;;;;;;;:::i;:::-;1446:197;;;:::o;14:404:38:-;;;147:3;140:4;132:6;128:17;124:27;114:2;;172:8;162;155:26;114:2;-1:-1:-1;202:20:38;;245:18;234:30;;231:2;;;284:8;274;267:26;231:2;328:4;320:6;316:17;304:29;;391:3;384:4;376;368:6;364:17;356:6;352:30;348:41;345:50;342:2;;;408:1;405;398:12;423:377;;;540:3;533:4;525:6;521:17;517:27;507:2;;565:8;555;548:26;507:2;-1:-1:-1;595:20:38;;638:18;627:30;;624:2;;;677:8;667;660:26;624:2;721:4;713:6;709:17;697:29;;773:3;766:4;757:6;749;745:19;741:30;738:39;735:2;;;790:1;787;780:12;805:158;873:20;;933:4;922:16;;912:27;;902:2;;953:1;950;943:12;968:263;;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;1149:9;1143:16;1168:33;1195:5;1168:33;:::i;:::-;1220:5;1049:182;-1:-1:-1;;;1049:182:38:o;1236:1396::-;;;;;;;;;1505:3;1493:9;1484:7;1480:23;1476:33;1473:2;;;1527:6;1519;1512:22;1473:2;1571:9;1558:23;1590:33;1617:5;1590:33;:::i;:::-;1642:5;-1:-1:-1;1699:2:38;1684:18;;1671:32;1712:35;1671:32;1712:35;:::i;:::-;1766:7;-1:-1:-1;1824:2:38;1809:18;;1796:32;1847:18;1877:14;;;1874:2;;;1909:6;1901;1894:22;1874:2;1953:76;2021:7;2012:6;2001:9;1997:22;1953:76;:::i;:::-;2048:8;;-1:-1:-1;1927:102:38;-1:-1:-1;2136:2:38;2121:18;;2108:32;;-1:-1:-1;2152:16:38;;;2149:2;;;2186:6;2178;2171:22;2149:2;2230:78;2300:7;2289:8;2278:9;2274:24;2230:78;:::i;:::-;2327:8;;-1:-1:-1;2204:104:38;-1:-1:-1;2415:3:38;2400:19;;2387:33;;-1:-1:-1;2432:16:38;;;2429:2;;;2466:6;2458;2451:22;2429:2;;2510:62;2564:7;2553:8;2542:9;2538:24;2510:62;:::i;:::-;1463:1169;;;;-1:-1:-1;1463:1169:38;;-1:-1:-1;1463:1169:38;;;;;;2591:8;-1:-1:-1;;;1463:1169:38:o;2637:849::-;;;;;;;2836:3;2824:9;2815:7;2811:23;2807:33;2804:2;;;2858:6;2850;2843:22;2804:2;2902:9;2889:23;2921:33;2948:5;2921:33;:::i;:::-;2973:5;-1:-1:-1;3030:2:38;3015:18;;3002:32;3043:35;3002:32;3043:35;:::i;:::-;3097:7;-1:-1:-1;3151:2:38;3136:18;;3123:32;;-1:-1:-1;3202:2:38;3187:18;;3174:32;;-1:-1:-1;3257:3:38;3242:19;;3229:33;3285:18;3274:30;;3271:2;;;3322:6;3314;3307:22;3271:2;3366:60;3418:7;3409:6;3398:9;3394:22;3366:60;:::i;:::-;2794:692;;;;-1:-1:-1;2794:692:38;;-1:-1:-1;2794:692:38;;3445:8;;2794:692;-1:-1:-1;;;2794:692:38:o;3491:677::-;;;;;;;3688:3;3676:9;3667:7;3663:23;3659:33;3656:2;;;3710:6;3702;3695:22;3656:2;3754:9;3741:23;3773:33;3800:5;3773:33;:::i;:::-;3825:5;-1:-1:-1;3877:2:38;3862:18;;3849:32;;-1:-1:-1;3928:2:38;3913:18;;3900:32;;-1:-1:-1;3979:2:38;3964:18;;3951:32;;-1:-1:-1;4035:3:38;4020:19;;4007:33;4049:35;4007:33;4049:35;:::i;:::-;4103:7;4093:17;;;4157:3;4146:9;4142:19;4129:33;4119:43;;3646:522;;;;;;;;:::o;4173:1026::-;;;;;;;;;;;4433:3;4421:9;4412:7;4408:23;4404:33;4401:2;;;4455:6;4447;4440:22;4401:2;4499:9;4486:23;4518:33;4545:5;4518:33;:::i;:::-;4570:5;-1:-1:-1;4622:2:38;4607:18;;4594:32;;-1:-1:-1;4673:2:38;4658:18;;4645:32;;-1:-1:-1;4724:2:38;4709:18;;4696:32;;-1:-1:-1;4780:3:38;4765:19;;4752:33;4794:35;4752:33;4794:35;:::i;:::-;4848:7;-1:-1:-1;4902:3:38;4887:19;;4874:33;;-1:-1:-1;4959:3:38;4944:19;;4931:33;4973:32;4931:33;4973:32;:::i;:::-;5024:7;-1:-1:-1;5050:39:38;5084:3;5069:19;;5050:39;:::i;:::-;5040:49;;5136:3;5125:9;5121:19;5108:33;5098:43;;5188:3;5177:9;5173:19;5160:33;5150:43;;4391:808;;;;;;;;;;;;;:::o;5204:257::-;;5324:2;5312:9;5303:7;5299:23;5295:32;5292:2;;;5345:6;5337;5330:22;5292:2;5382:9;5376:16;5401:30;5425:5;5401:30;:::i;5466:352::-;;5577:2;5565:9;5556:7;5552:23;5548:32;5545:2;;;5598:6;5590;5583:22;5545:2;5642:9;5629:23;5692:66;5685:5;5681:78;5674:5;5671:89;5661:2;;5779:6;5771;5764:22;6997:194;;7120:2;7108:9;7099:7;7095:23;7091:32;7088:2;;;7141:6;7133;7126:22;7088:2;-1:-1:-1;7169:16:38;;7078:113;-1:-1:-1;7078:113:38:o;7196:327::-;;;7325:2;7313:9;7304:7;7300:23;7296:32;7293:2;;;7346:6;7338;7331:22;7293:2;7387:9;7374:23;7364:33;;7447:2;7436:9;7432:18;7419:32;7460:33;7487:5;7460:33;:::i;:::-;7512:5;7502:15;;;7283:240;;;;;:::o;7528:324::-;;;7668:2;7656:9;7647:7;7643:23;7639:32;7636:2;;;7689:6;7681;7674:22;7636:2;7723:9;7717:16;7707:26;;7776:2;7765:9;7761:18;7755:25;7789:33;7816:5;7789:33;:::i;7857:255::-;;;7997:2;7985:9;7976:7;7972:23;7968:32;7965:2;;;8018:6;8010;8003:22;7965:2;-1:-1:-1;;8046:16:38;;8102:2;8087:18;;;8081:25;8046:16;;8081:25;;-1:-1:-1;7955:157:38:o;8117:533::-;;;;;;8297:3;8285:9;8276:7;8272:23;8268:33;8265:2;;;8319:6;8311;8304:22;8265:2;8360:9;8347:23;8337:33;;8417:2;8406:9;8402:18;8389:32;8379:42;;8468:2;8457:9;8453:18;8440:32;8430:42;;8522:2;8511:9;8507:18;8494:32;8535:33;8562:5;8535:33;:::i;:::-;8255:395;;;;-1:-1:-1;8255:395:38;;8639:3;8624:19;8611:33;;8255:395;-1:-1:-1;;8255:395:38:o;8655:882::-;;;;;;;;;;8898:3;8886:9;8877:7;8873:23;8869:33;8866:2;;;8920:6;8912;8905:22;8866:2;8961:9;8948:23;8938:33;;9018:2;9007:9;9003:18;8990:32;8980:42;;9069:2;9058:9;9054:18;9041:32;9031:42;;9123:2;9112:9;9108:18;9095:32;9136:33;9163:5;9136:33;:::i;:::-;9188:5;-1:-1:-1;9240:3:38;9225:19;;9212:33;;-1:-1:-1;9297:3:38;9282:19;;9269:33;9311:32;9269:33;9311:32;:::i;:::-;9362:7;-1:-1:-1;9388:39:38;9422:3;9407:19;;9388:39;:::i;:::-;9378:49;;9474:3;9463:9;9459:19;9446:33;9436:43;;9526:3;9515:9;9511:19;9498:33;9488:43;;8856:681;;;;;;;;;;;:::o;9542:368::-;9709:66;9804:2;9800:15;;;9796:24;;9784:37;;9855:15;;;;9851:24;9846:2;9837:12;;9830:46;9901:2;9892:12;;9689:221::o;9915:430::-;;10082:6;10076:13;10107:3;10119:129;10133:6;10130:1;10127:13;10119:129;;;10231:4;10215:14;;;10211:25;;10205:32;10192:11;;;10185:53;10148:12;10119:129;;;10266:6;10263:1;10260:13;10257:2;;;10301:3;10292:6;10287:3;10283:16;10276:29;10257:2;-1:-1:-1;10323:16:38;;;;;10052:293;-1:-1:-1;;10052:293:38:o;10350:724::-;10721:66;10709:79;;10825:2;10821:15;;;;10838:66;10817:88;10813:1;10804:11;;10797:109;10931:2;10922:12;;10915:28;10973:66;10968:2;10959:12;;10952:88;11065:2;11056:12;;10699:375::o;11079:226::-;-1:-1:-1;;;;;11243:55:38;;;;11225:74;;11213:2;11198:18;;11180:125::o;11310:398::-;-1:-1:-1;;;;;11591:15:38;;;11573:34;;11643:15;;;;11638:2;11623:18;;11616:43;11690:2;11675:18;;11668:34;;;;11500:2;11485:18;;11467:241::o;11713:693::-;-1:-1:-1;;;;;12103:15:38;;;12085:34;;12155:15;;;;12150:2;12135:18;;12128:43;12202:2;12187:18;;12180:34;;;;12245:2;12230:18;;12223:34;;;;12306:4;12294:17;12288:3;12273:19;;12266:46;12343:3;12328:19;;12321:35;12387:3;12372:19;;12365:35;;;;12011:3;11996:19;;11978:428::o;12411:297::-;-1:-1:-1;;;;;12603:55:38;;;;12585:74;;12690:2;12675:18;;12668:34;12573:2;12558:18;;12540:168::o;12713:187::-;12878:14;;12871:22;12853:41;;12841:2;12826:18;;12808:92::o;12905:248::-;13079:66;13067:79;;;;13049:98;;13037:2;13022:18;;13004:149::o;13158:355::-;13360:2;13342:21;;;13399:2;13379:18;;;13372:30;13438:33;13433:2;13418:18;;13411:61;13504:2;13489:18;;13332:181::o;13518:350::-;13720:2;13702:21;;;13759:2;13739:18;;;13732:30;13798:28;13793:2;13778:18;;13771:56;13859:2;13844:18;;13692:176::o;13873:349::-;14075:2;14057:21;;;14114:2;14094:18;;;14087:30;14153:27;14148:2;14133:18;;14126:55;14213:2;14198:18;;14047:175::o;14227:340::-;14429:2;14411:21;;;14468:2;14448:18;;;14441:30;14507:18;14502:2;14487:18;;14480:46;14558:2;14543:18;;14401:166::o;14572:399::-;14774:2;14756:21;;;14813:2;14793:18;;;14786:30;14852:34;14847:2;14832:18;;14825:62;14923:5;14918:2;14903:18;;14896:33;14961:3;14946:19;;14746:225::o;14976:399::-;15178:2;15160:21;;;15217:2;15197:18;;;15190:30;15256:34;15251:2;15236:18;;15229:62;15327:5;15322:2;15307:18;;15300:33;15365:3;15350:19;;15150:225::o;15380:352::-;15582:2;15564:21;;;15621:2;15601:18;;;15594:30;15660;15655:2;15640:18;;15633:58;15723:2;15708:18;;15554:178::o;15737:177::-;15883:25;;;15871:2;15856:18;;15838:76::o;15919:248::-;16093:25;;;16149:2;16134:18;;16127:34;16081:2;16066:18;;16048:119::o;16172:156::-;-1:-1:-1;;;;;16253:5:38;16249:54;16242:5;16239:65;16229:2;;16318:1;16315;16308:12;16229:2;16219:109;:::o;16333:120::-;16421:5;16414:13;16407:21;16400:5;16397:32;16387:2;;16443:1;16440;16433:12"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"wrapper\",\"type\":\"address\"}],\"name\":\"_wrapEth\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"interoperable\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountBridge\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAndUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountBridge\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountEth\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermitAndUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MateriaLiquidityRemover.sol\":\"MateriaLiquidityRemover\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/MateriaLiquidityRemover.sol\":{\"keccak256\":\"0x37facac45bc92a03064df17d35d66fad1fdcb1b2cb4ba1992195966e860b0dbe\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://cf1e6f46d5a16c4826e33db7144129a7b433b45749d090a34fa851faf02bef10\",\"dweb:/ipfs/QmZjm5Hv9ES11XDMbjHwP1JdociAZNx9Wqw87SNtWkzoVP\"]},\"contracts/MateriaOperator.sol\":{\"keccak256\":\"0x0d1e0327e73a3b8a1b316f27d2ca2040917bb2c4c8bf0d0a6fd635798597d5a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://e86eebdbf5a6be0e77c9d6d849060a9ba537031956ca32a199eebaca576d51b5\",\"dweb:/ipfs/QmV6PgD4uuJhmywByCYPeAmRyENJsrY5xxmnxfY3pz9DXR\"]},\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IDoubleProxy.sol\":{\"keccak256\":\"0xb3775ff336d8ca9e0f7cb3b7e7c322d96c6360b53ec4a3ce45c6540d4f0126a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://6ec1948724904ecf9185f960548865d20a13969a840c926e9162e4bb354d18f6\",\"dweb:/ipfs/QmXbRyhfnW3E4Mij5y8v9JfHVB2vqxxwDgNfvHeu3wHiHJ\"]},\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IERC20WrapperV1.sol\":{\"keccak256\":\"0xb11ab8431790ecf02d6380277e277a1e44fcf1cbc81973301149e7080157ea4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b5dfc1840e8834ba39b1a634fdc2ba67d250adc4f8540f0ee33e16439ccb9cd\",\"dweb:/ipfs/QmTyF4vz44kcYuLuZAEW7tBxWuMiNZAojDKopi8oeudgk3\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]},\"contracts/interfaces/IEthItemMainInterface.sol\":{\"keccak256\":\"0x1bc85f4e88618a2d75910da856d5d43a87213463dae57054b44aa0e2220c43e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12240288d6503024c37ad756722f451ad3d819affd30b9d54ca0e06942c414b0\",\"dweb:/ipfs/QmU1hLcanobgXgEEXbbA56YPob23ghDXXqjK7gCCXbj3mT\"]},\"contracts/interfaces/IEthItemModelBase.sol\":{\"keccak256\":\"0x2ef4d851f1127e58dc496490f84ebe5690bff39c48a0ff43338d0087e3b114da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7db0efdf2c2c6c758fa12146e9aa31ebe1fc7b1eaa36d644ada5a7696b22c627\",\"dweb:/ipfs/QmXP62zz7qHJtQfxNRoxPsPiJxhXTKaKRfjCHGxetwgYyV\"]},\"contracts/interfaces/IMateriaFactory.sol\":{\"keccak256\":\"0xbb23d0937dd4e8da3b15e4e461603554abc9945d40b713f5f8f6e612d7e36dae\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://1cc856dd3375c7c345c693edda94b27d5c03d666843989308d6e61ef786b3718\",\"dweb:/ipfs/QmZaq9Vec3gVXNFoaWX56B2DQPYjpiDahdEoqogskHiJAp\"]},\"contracts/interfaces/IMateriaOrchestrator.sol\":{\"keccak256\":\"0x178eea6d9abe7758adbf30d406c9e3b1e05028441e6bf2661f6ac9d7441b06fc\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://b96f2d38b59f06bbfdf7d13e5a375e8eb6e1de507f40be7e7cbe37b34526a0e6\",\"dweb:/ipfs/QmSgMmM6Uk2EpgwNZxZpJf3yHHPQZ6LvcBWAV9DuPSnrCm\"]},\"contracts/interfaces/IMateriaPair.sol\":{\"keccak256\":\"0x9bebb503cf622a7e7328ff812b8817e1d3b22e273d345083118e92522b810693\",\"urls\":[\"bzz-raw://a0b3308a2e9f28a85ec586372329792eaf32562c7293af0657ef03f8d04bc7f9\",\"dweb:/ipfs/QmegwdpH1wYAUtTwKu1yUiekj13CB251znNc4Kb2Jf5b2L\"]},\"contracts/interfaces/INativeV1.sol\":{\"keccak256\":\"0x923c01bc275842ef09bd388355d611e119f115b92c283beb11b88d783696bae5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://117e0b85dba46111c974aa4a9e6ddd46d9d75198e93b6e2c571604fb5b25f5cb\",\"dweb:/ipfs/QmaVw7wqeR8jWMW55VPp6F1cMcGhb4VLAG3fPpRwTHmn3D\"]},\"contracts/libraries/MateriaLibrary.sol\":{\"keccak256\":\"0x84b8cdd67ecab6d9bd442140670a16c4608fefdcaa702c25339a89b0527381c6\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://f2ce38a46f0ddc6b043ba9e91590f482553fc96c7bec769825d36089f6d08887\",\"dweb:/ipfs/QmXVp7AwoHFm4whU26XE9kvaYmfb4QyXrzsqaEGXvgybFN\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xe04b4ed1aab8779734d012e907f742e8b6e8ad539c01d5466b9eb58752fdc514\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://667941f2ea3584629681a303e988ffcbc33a2e8313f4658ad8700b2209b3ea4d\",\"dweb:/ipfs/QmafqLrntkf6gRyhAHt4wYojdHwuZXeD8gcE7FJWW6rKWm\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0xb2c4a89b2ee4538b41badb2b6e2d141deeca68be9298ec3e7f98b6812b4ee2a2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bf3e8a68c38541e0425dfd1f825371086a9a18eaadf12000e00b0440156198b\",\"dweb:/ipfs/QmcfasSoXaDg5A5dscMiKH41fWnCFnbJfpSAzn5gbMaVxd\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b5061227d806100206000396000f3fe6080604052600436106100b15760003560e01c806396c92f5e11610069578063ee1fae3c1161004e578063ee1fae3c146101c9578063f23a6e61146101e9578063f717cd6d14610204576100b1565b806396c92f5e1461016e578063bc197c811461019c576100b1565b80633d0c2a341161009a5780633d0c2a341461010e5780635909889d1461012e578063678700e01461014e576100b1565b806301ffc9a7146100b6578063104870fd146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d1366004611ce8565b610224565b6040516100e39190612005565b60405180910390f35b3480156100f857600080fd5b5061010c610107366004611c37565b61022c565b005b34801561011a57600080fd5b5061010c610129366004611bda565b6103fa565b34801561013a57600080fd5b5061010c610149366004611c37565b61041c565b34801561015a57600080fd5b5061010c610169366004611dfe565b610444565b34801561017a57600080fd5b5061018e610189366004611bda565b610664565b6040516100e3929190612213565b3480156101a857600080fd5b506101bc6101b7366004611aa5565b610a8e565b6040516100e39190612010565b3480156101d557600080fd5b5061018e6101e4366004611db6565b610a95565b3480156101f557600080fd5b506101bc6101b7366004611b60565b610217610212366004611d40565b610e96565b6040516100e39190611f73565b60005b919050565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102dc57600080fd5b505afa1580156102f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103149190611a82565b9050600061032383838f610f13565b9050600087610332578c610354565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063d505accf906103a8903390309086908f908e908e908e90600401611fab565b600060405180830381600087803b1580156103c257600080fd5b505af11580156103d6573d6000803e3d6000fd5b505050506103e88e8e8e8e8e8e610664565b50505050505050505050505050505050565b610408868686868686610664565b50506104148683610fa1565b505050505050565b61042e8a8a8a8a308a8a8a8a8a61022c565b6104388a87610fa1565b50505050505050505050565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561047f57600080fd5b505afa158015610493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b79190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052c9190611a82565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190611a82565b905060006105ba84846105b5600086611350565b610f13565b90506000886105c9578d6105eb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b9050816001600160a01b031663d505accf3330848e8d8d8d6040518863ffffffff1660e01b81526004016106259796959493929190611fab565b600060405180830381600087803b15801561063f57600080fd5b505af1158015610653573d6000803e3d6000fd5b505050506103e88e8d8f8e8e610a95565b60008082428110156106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120e2565b60405180910390fd5b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e657600080fd5b505afa1580156106fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071e9190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561075b57600080fd5b505afa15801561076f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107939190611a82565b905060008060006107a48e86611502565b9150915081610847576040517f0c0f6b710000000000000000000000000000000000000000000000000000000081526001600160a01b03861690630c0f6b71906107f290849060040161220a565b60206040518083038186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108429190611a82565b610849565b8d5b9d506108c6306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561088757600080fd5b505afa15801561089b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bf9190611a82565b8f86610f13565b92505050806001600160a01b03166323b872dd33838e6040518463ffffffff1660e01b81526004016108fa93929190611f87565b602060405180830381600087803b15801561091457600080fd5b505af1158015610928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094c9190611ccc565b50600080826001600160a01b03166389afcb448b6040518263ffffffff1660e01b815260040161097c9190611f73565b6040805180830381600087803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cd9190611d93565b9150915060006109dd8f8661163d565b509050846001600160a01b0316816001600160a01b031614610a00578183610a03565b82825b90995097508b891015610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612074565b8c881015610a7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120ab565b50505050505050965096945050505050565b6000806000fd5b6000808242811015610ad3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120e2565b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0e57600080fd5b505afa158015610b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b469190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8357600080fd5b505afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb9190611a82565b90506000610bca600084611350565b90506000610c49306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0a57600080fd5b505afa158015610c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c429190611a82565b8385610f13565b9050806001600160a01b03166323b872dd33838f6040518463ffffffff1660e01b8152600401610c7b93929190611f87565b602060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd9190611ccc565b50600080826001600160a01b03166389afcb44306040518263ffffffff1660e01b8152600401610cfd9190611f73565b6040805180830381600087803b158015610d1657600080fd5b505af1158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e9190611d93565b915091506000610d5e858761163d565b509050856001600160a01b0316816001600160a01b031614610d81578183610d84565b82825b909a5098508d8a1015610dc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612074565b8c891015610dfd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120ab565b610e08868d8c6116f4565b610e84306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4457600080fd5b505afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c9190611d28565b8a898f611810565b50505050505050509550959350505050565b6000816001600160a01b031663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190611d6f565b949350505050565b6000806000610f22858561163d565b91509150858282604051602001610f3a929190611e7f565b60405160208183030381529060405280519060200120604051602001610f61929190611ef2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610fdc57600080fd5b505afa158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110149190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105157600080fd5b505afa158015611065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110899190611a82565b90506000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190611a82565b905060008061110d8786611502565b915091508161111c57866111b1565b6040517f023b04b20000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063023b04b29061116190849060040161220a565b60206040518083038186803b15801561117957600080fd5b505afa15801561118d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b19190611a82565b965060006112368486886001600160a01b0316630c0f6b71866040518263ffffffff1660e01b81526004016111e6919061220a565b60206040518083038186803b1580156111fe57600080fd5b505afa158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b59190611a82565b90506112c08289836001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112699190611f73565b60206040518083038186803b15801561128157600080fd5b505afa158015611295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b99190611d28565b898b611899565b6113468588876001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112f19190611f73565b60206040518083038186803b15801561130957600080fd5b505afa15801561131d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113419190611d28565b6116f4565b5050505050505050565b60006001600160a01b03831661145357816001600160a01b0316630c0f6b71306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a857600080fd5b505afa1580156113bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e09190611d28565b6040518263ffffffff1660e01b81526004016113fc919061220a565b60206040518083038186803b15801561141457600080fd5b505afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c9190611a82565b90506114fc565b600061145f8484611502565b6040517f0c0f6b710000000000000000000000000000000000000000000000000000000081529092506001600160a01b0385169150630c0f6b71906114a890849060040161220a565b60206040518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f89190611a82565b9150505b92915050565b600080836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153e57600080fd5b505afa92505050801561158c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261158991810190611a82565b60015b611630576040517f1bf8ee70000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841690631bf8ee70906115d9908790600401611f73565b60206040518083038186803b1580156115f157600080fd5b505afa158015611605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116299190611d28565b9050611636565b50600191505b9250929050565b600080826001600160a01b0316846001600160a01b0316141561168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612119565b826001600160a01b0316846001600160a01b0316106116ac5782846116af565b83835b90925090506001600160a01b038216611636576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906121d3565b600080846001600160a01b031663a9059cbb8585604051602401611719929190611fec565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516117679190611eb9565b6000604051808303816000865af19150503d80600081146117a4576040519150601f19603f3d011682016040523d82523d6000602084013e6117a9565b606091505b50915091508180156117d35750805115806117d35750808060200190518101906117d39190611ccc565b611809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061203d565b5050505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab906118579087908790600401612213565b600060405180830381600087803b15801561187157600080fd5b505af1158015611885573d6000803e3d6000fd5b505050506118938184611943565b50505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab906118e09088908790600401612213565b600060405180830381600087803b1580156118fa57600080fd5b505af115801561190e573d6000803e3d6000fd5b505050506118098482866001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112f19190611f73565b604080516000808252602082019092526001600160a01b03841690839060405161196d9190611eb9565b60006040518083038185875af1925050503d80600081146119aa576040519150601f19603f3d011682016040523d82523d6000602084013e6119af565b606091505b50509050806119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612176565b505050565b60008083601f840112611a00578182fd5b50813567ffffffffffffffff811115611a17578182fd5b602083019150836020808302850101111561163657600080fd5b60008083601f840112611a42578182fd5b50813567ffffffffffffffff811115611a59578182fd5b60208301915083602082850101111561163657600080fd5b803560ff8116811461022757600080fd5b600060208284031215611a93578081fd5b8151611a9e81612221565b9392505050565b60008060008060008060008060a0898b031215611ac0578384fd5b8835611acb81612221565b97506020890135611adb81612221565b9650604089013567ffffffffffffffff80821115611af7578586fd5b611b038c838d016119ef565b909850965060608b0135915080821115611b1b578586fd5b611b278c838d016119ef565b909650945060808b0135915080821115611b3f578384fd5b50611b4c8b828c01611a31565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611b78578182fd5b8635611b8381612221565b95506020870135611b9381612221565b94506040870135935060608701359250608087013567ffffffffffffffff811115611bbc578283fd5b611bc889828a01611a31565b979a9699509497509295939492505050565b60008060008060008060c08789031215611bf2578182fd5b8635611bfd81612221565b95506020870135945060408701359350606087013592506080870135611c2281612221565b8092505060a087013590509295509295509295565b6000806000806000806000806000806101408b8d031215611c56578182fd5b8a35611c6181612221565b995060208b0135985060408b0135975060608b0135965060808b0135611c8681612221565b955060a08b0135945060c08b0135611c9d81612239565b9350611cab60e08c01611a71565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600060208284031215611cdd578081fd5b8151611a9e81612239565b600060208284031215611cf9578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a9e578182fd5b600060208284031215611d39578081fd5b5051919050565b60008060408385031215611d52578182fd5b823591506020830135611d6481612221565b809150509250929050565b60008060408385031215611d81578182fd5b825191506020830151611d6481612221565b60008060408385031215611da5578182fd5b505080516020909101519092909150565b600080600080600060a08688031215611dcd578283fd5b8535945060208601359350604086013592506060860135611ded81612221565b949793965091946080013592915050565b60008060008060008060008060006101208a8c031215611e1c578283fd5b8935985060208a0135975060408a0135965060608a0135611e3c81612221565b955060808a0135945060a08a0135611e5381612239565b9350611e6160c08b01611a71565b925060e08a013591506101008a013590509295985092959850929598565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015611ed95760208186018101518583015201611ebf565b81811115611ee75782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601a908201527f494e53554646494349454e545f4252494447455f414d4f554e54000000000000604082015260600190565b60208082526019908201527f494e53554646494349454e545f544f4b454e5f414d4f554e5400000000000000604082015260600190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b6001600160a01b038116811461223657600080fd5b50565b801515811461223657600080fdfea264697066735822122077216a0c8b23573a39668fac63e6b0f3cb300b9ce9410d4b50499c15e96d054b64736f6c63430008000033",
      "bin": "608060405234801561001057600080fd5b5061227d806100206000396000f3fe6080604052600436106100b15760003560e01c806396c92f5e11610069578063ee1fae3c1161004e578063ee1fae3c146101c9578063f23a6e61146101e9578063f717cd6d14610204576100b1565b806396c92f5e1461016e578063bc197c811461019c576100b1565b80633d0c2a341161009a5780633d0c2a341461010e5780635909889d1461012e578063678700e01461014e576100b1565b806301ffc9a7146100b6578063104870fd146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d1366004611ce8565b610224565b6040516100e39190612005565b60405180910390f35b3480156100f857600080fd5b5061010c610107366004611c37565b61022c565b005b34801561011a57600080fd5b5061010c610129366004611bda565b6103fa565b34801561013a57600080fd5b5061010c610149366004611c37565b61041c565b34801561015a57600080fd5b5061010c610169366004611dfe565b610444565b34801561017a57600080fd5b5061018e610189366004611bda565b610664565b6040516100e3929190612213565b3480156101a857600080fd5b506101bc6101b7366004611aa5565b610a8e565b6040516100e39190612010565b3480156101d557600080fd5b5061018e6101e4366004611db6565b610a95565b3480156101f557600080fd5b506101bc6101b7366004611b60565b610217610212366004611d40565b610e96565b6040516100e39190611f73565b60005b919050565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102dc57600080fd5b505afa1580156102f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103149190611a82565b9050600061032383838f610f13565b9050600087610332578c610354565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063d505accf906103a8903390309086908f908e908e908e90600401611fab565b600060405180830381600087803b1580156103c257600080fd5b505af11580156103d6573d6000803e3d6000fd5b505050506103e88e8e8e8e8e8e610664565b50505050505050505050505050505050565b610408868686868686610664565b50506104148683610fa1565b505050505050565b61042e8a8a8a8a308a8a8a8a8a61022c565b6104388a87610fa1565b50505050505050505050565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561047f57600080fd5b505afa158015610493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b79190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052c9190611a82565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190611a82565b905060006105ba84846105b5600086611350565b610f13565b90506000886105c9578d6105eb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b9050816001600160a01b031663d505accf3330848e8d8d8d6040518863ffffffff1660e01b81526004016106259796959493929190611fab565b600060405180830381600087803b15801561063f57600080fd5b505af1158015610653573d6000803e3d6000fd5b505050506103e88e8d8f8e8e610a95565b60008082428110156106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120e2565b60405180910390fd5b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e657600080fd5b505afa1580156106fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071e9190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561075b57600080fd5b505afa15801561076f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107939190611a82565b905060008060006107a48e86611502565b9150915081610847576040517f0c0f6b710000000000000000000000000000000000000000000000000000000081526001600160a01b03861690630c0f6b71906107f290849060040161220a565b60206040518083038186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108429190611a82565b610849565b8d5b9d506108c6306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561088757600080fd5b505afa15801561089b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bf9190611a82565b8f86610f13565b92505050806001600160a01b03166323b872dd33838e6040518463ffffffff1660e01b81526004016108fa93929190611f87565b602060405180830381600087803b15801561091457600080fd5b505af1158015610928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094c9190611ccc565b50600080826001600160a01b03166389afcb448b6040518263ffffffff1660e01b815260040161097c9190611f73565b6040805180830381600087803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cd9190611d93565b9150915060006109dd8f8661163d565b509050846001600160a01b0316816001600160a01b031614610a00578183610a03565b82825b90995097508b891015610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612074565b8c881015610a7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120ab565b50505050505050965096945050505050565b6000806000fd5b6000808242811015610ad3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120e2565b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0e57600080fd5b505afa158015610b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b469190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8357600080fd5b505afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb9190611a82565b90506000610bca600084611350565b90506000610c49306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0a57600080fd5b505afa158015610c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c429190611a82565b8385610f13565b9050806001600160a01b03166323b872dd33838f6040518463ffffffff1660e01b8152600401610c7b93929190611f87565b602060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd9190611ccc565b50600080826001600160a01b03166389afcb44306040518263ffffffff1660e01b8152600401610cfd9190611f73565b6040805180830381600087803b158015610d1657600080fd5b505af1158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e9190611d93565b915091506000610d5e858761163d565b509050856001600160a01b0316816001600160a01b031614610d81578183610d84565b82825b909a5098508d8a1015610dc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612074565b8c891015610dfd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120ab565b610e08868d8c6116f4565b610e84306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4457600080fd5b505afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c9190611d28565b8a898f611810565b50505050505050509550959350505050565b6000816001600160a01b031663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190611d6f565b949350505050565b6000806000610f22858561163d565b91509150858282604051602001610f3a929190611e7f565b60405160208183030381529060405280519060200120604051602001610f61929190611ef2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610fdc57600080fd5b505afa158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110149190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105157600080fd5b505afa158015611065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110899190611a82565b90506000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190611a82565b905060008061110d8786611502565b915091508161111c57866111b1565b6040517f023b04b20000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063023b04b29061116190849060040161220a565b60206040518083038186803b15801561117957600080fd5b505afa15801561118d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b19190611a82565b965060006112368486886001600160a01b0316630c0f6b71866040518263ffffffff1660e01b81526004016111e6919061220a565b60206040518083038186803b1580156111fe57600080fd5b505afa158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b59190611a82565b90506112c08289836001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112699190611f73565b60206040518083038186803b15801561128157600080fd5b505afa158015611295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b99190611d28565b898b611899565b6113468588876001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112f19190611f73565b60206040518083038186803b15801561130957600080fd5b505afa15801561131d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113419190611d28565b6116f4565b5050505050505050565b60006001600160a01b03831661145357816001600160a01b0316630c0f6b71306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a857600080fd5b505afa1580156113bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e09190611d28565b6040518263ffffffff1660e01b81526004016113fc919061220a565b60206040518083038186803b15801561141457600080fd5b505afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c9190611a82565b90506114fc565b600061145f8484611502565b6040517f0c0f6b710000000000000000000000000000000000000000000000000000000081529092506001600160a01b0385169150630c0f6b71906114a890849060040161220a565b60206040518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f89190611a82565b9150505b92915050565b600080836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153e57600080fd5b505afa92505050801561158c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261158991810190611a82565b60015b611630576040517f1bf8ee70000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841690631bf8ee70906115d9908790600401611f73565b60206040518083038186803b1580156115f157600080fd5b505afa158015611605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116299190611d28565b9050611636565b50600191505b9250929050565b600080826001600160a01b0316846001600160a01b0316141561168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612119565b826001600160a01b0316846001600160a01b0316106116ac5782846116af565b83835b90925090506001600160a01b038216611636576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906121d3565b600080846001600160a01b031663a9059cbb8585604051602401611719929190611fec565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516117679190611eb9565b6000604051808303816000865af19150503d80600081146117a4576040519150601f19603f3d011682016040523d82523d6000602084013e6117a9565b606091505b50915091508180156117d35750805115806117d35750808060200190518101906117d39190611ccc565b611809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061203d565b5050505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab906118579087908790600401612213565b600060405180830381600087803b15801561187157600080fd5b505af1158015611885573d6000803e3d6000fd5b505050506118938184611943565b50505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab906118e09088908790600401612213565b600060405180830381600087803b1580156118fa57600080fd5b505af115801561190e573d6000803e3d6000fd5b505050506118098482866001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112f19190611f73565b604080516000808252602082019092526001600160a01b03841690839060405161196d9190611eb9565b60006040518083038185875af1925050503d80600081146119aa576040519150601f19603f3d011682016040523d82523d6000602084013e6119af565b606091505b50509050806119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612176565b505050565b60008083601f840112611a00578182fd5b50813567ffffffffffffffff811115611a17578182fd5b602083019150836020808302850101111561163657600080fd5b60008083601f840112611a42578182fd5b50813567ffffffffffffffff811115611a59578182fd5b60208301915083602082850101111561163657600080fd5b803560ff8116811461022757600080fd5b600060208284031215611a93578081fd5b8151611a9e81612221565b9392505050565b60008060008060008060008060a0898b031215611ac0578384fd5b8835611acb81612221565b97506020890135611adb81612221565b9650604089013567ffffffffffffffff80821115611af7578586fd5b611b038c838d016119ef565b909850965060608b0135915080821115611b1b578586fd5b611b278c838d016119ef565b909650945060808b0135915080821115611b3f578384fd5b50611b4c8b828c01611a31565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611b78578182fd5b8635611b8381612221565b95506020870135611b9381612221565b94506040870135935060608701359250608087013567ffffffffffffffff811115611bbc578283fd5b611bc889828a01611a31565b979a9699509497509295939492505050565b60008060008060008060c08789031215611bf2578182fd5b8635611bfd81612221565b95506020870135945060408701359350606087013592506080870135611c2281612221565b8092505060a087013590509295509295509295565b6000806000806000806000806000806101408b8d031215611c56578182fd5b8a35611c6181612221565b995060208b0135985060408b0135975060608b0135965060808b0135611c8681612221565b955060a08b0135945060c08b0135611c9d81612239565b9350611cab60e08c01611a71565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600060208284031215611cdd578081fd5b8151611a9e81612239565b600060208284031215611cf9578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a9e578182fd5b600060208284031215611d39578081fd5b5051919050565b60008060408385031215611d52578182fd5b823591506020830135611d6481612221565b809150509250929050565b60008060408385031215611d81578182fd5b825191506020830151611d6481612221565b60008060408385031215611da5578182fd5b505080516020909101519092909150565b600080600080600060a08688031215611dcd578283fd5b8535945060208601359350604086013592506060860135611ded81612221565b949793965091946080013592915050565b60008060008060008060008060006101208a8c031215611e1c578283fd5b8935985060208a0135975060408a0135965060608a0135611e3c81612221565b955060808a0135945060a08a0135611e5381612239565b9350611e6160c08b01611a71565b925060e08a013591506101008a013590509295985092959850929598565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015611ed95760208186018101518583015201611ebf565b81811115611ee75782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601a908201527f494e53554646494349454e545f4252494447455f414d4f554e54000000000000604082015260600190565b60208082526019908201527f494e53554646494349454e545f544f4b454e5f414d4f554e5400000000000000604082015260600190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b6001600160a01b038116811461223657600080fd5b50565b801515811461223657600080fdfea264697066735822122077216a0c8b23573a39668fac63e6b0f3cb300b9ce9410d4b50499c15e96d054b64736f6c63430008000033",
      "bin-runtime": "6080604052600436106100b15760003560e01c806396c92f5e11610069578063ee1fae3c1161004e578063ee1fae3c146101c9578063f23a6e61146101e9578063f717cd6d14610204576100b1565b806396c92f5e1461016e578063bc197c811461019c576100b1565b80633d0c2a341161009a5780633d0c2a341461010e5780635909889d1461012e578063678700e01461014e576100b1565b806301ffc9a7146100b6578063104870fd146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d1366004611ce8565b610224565b6040516100e39190612005565b60405180910390f35b3480156100f857600080fd5b5061010c610107366004611c37565b61022c565b005b34801561011a57600080fd5b5061010c610129366004611bda565b6103fa565b34801561013a57600080fd5b5061010c610149366004611c37565b61041c565b34801561015a57600080fd5b5061010c610169366004611dfe565b610444565b34801561017a57600080fd5b5061018e610189366004611bda565b610664565b6040516100e3929190612213565b3480156101a857600080fd5b506101bc6101b7366004611aa5565b610a8e565b6040516100e39190612010565b3480156101d557600080fd5b5061018e6101e4366004611db6565b610a95565b3480156101f557600080fd5b506101bc6101b7366004611b60565b610217610212366004611d40565b610e96565b6040516100e39190611f73565b60005b919050565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102dc57600080fd5b505afa1580156102f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103149190611a82565b9050600061032383838f610f13565b9050600087610332578c610354565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063d505accf906103a8903390309086908f908e908e908e90600401611fab565b600060405180830381600087803b1580156103c257600080fd5b505af11580156103d6573d6000803e3d6000fd5b505050506103e88e8e8e8e8e8e610664565b50505050505050505050505050505050565b610408868686868686610664565b50506104148683610fa1565b505050505050565b61042e8a8a8a8a308a8a8a8a8a61022c565b6104388a87610fa1565b50505050505050505050565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561047f57600080fd5b505afa158015610493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b79190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104f457600080fd5b505afa158015610508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052c9190611a82565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190611a82565b905060006105ba84846105b5600086611350565b610f13565b90506000886105c9578d6105eb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b9050816001600160a01b031663d505accf3330848e8d8d8d6040518863ffffffff1660e01b81526004016106259796959493929190611fab565b600060405180830381600087803b15801561063f57600080fd5b505af1158015610653573d6000803e3d6000fd5b505050506103e88e8d8f8e8e610a95565b60008082428110156106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120e2565b60405180910390fd5b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e657600080fd5b505afa1580156106fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071e9190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561075b57600080fd5b505afa15801561076f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107939190611a82565b905060008060006107a48e86611502565b9150915081610847576040517f0c0f6b710000000000000000000000000000000000000000000000000000000081526001600160a01b03861690630c0f6b71906107f290849060040161220a565b60206040518083038186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108429190611a82565b610849565b8d5b9d506108c6306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561088757600080fd5b505afa15801561089b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bf9190611a82565b8f86610f13565b92505050806001600160a01b03166323b872dd33838e6040518463ffffffff1660e01b81526004016108fa93929190611f87565b602060405180830381600087803b15801561091457600080fd5b505af1158015610928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094c9190611ccc565b50600080826001600160a01b03166389afcb448b6040518263ffffffff1660e01b815260040161097c9190611f73565b6040805180830381600087803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cd9190611d93565b9150915060006109dd8f8661163d565b509050846001600160a01b0316816001600160a01b031614610a00578183610a03565b82825b90995097508b891015610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612074565b8c881015610a7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120ab565b50505050505050965096945050505050565b6000806000fd5b6000808242811015610ad3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120e2565b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0e57600080fd5b505afa158015610b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b469190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8357600080fd5b505afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb9190611a82565b90506000610bca600084611350565b90506000610c49306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0a57600080fd5b505afa158015610c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c429190611a82565b8385610f13565b9050806001600160a01b03166323b872dd33838f6040518463ffffffff1660e01b8152600401610c7b93929190611f87565b602060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd9190611ccc565b50600080826001600160a01b03166389afcb44306040518263ffffffff1660e01b8152600401610cfd9190611f73565b6040805180830381600087803b158015610d1657600080fd5b505af1158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e9190611d93565b915091506000610d5e858761163d565b509050856001600160a01b0316816001600160a01b031614610d81578183610d84565b82825b909a5098508d8a1015610dc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612074565b8c891015610dfd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906120ab565b610e08868d8c6116f4565b610e84306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4457600080fd5b505afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c9190611d28565b8a898f611810565b50505050505050509550959350505050565b6000816001600160a01b031663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190611d6f565b949350505050565b6000806000610f22858561163d565b91509150858282604051602001610f3a929190611e7f565b60405160208183030381529060405280519060200120604051602001610f61929190611ef2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610fdc57600080fd5b505afa158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110149190611a82565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105157600080fd5b505afa158015611065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110899190611a82565b90506000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190611a82565b905060008061110d8786611502565b915091508161111c57866111b1565b6040517f023b04b20000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063023b04b29061116190849060040161220a565b60206040518083038186803b15801561117957600080fd5b505afa15801561118d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b19190611a82565b965060006112368486886001600160a01b0316630c0f6b71866040518263ffffffff1660e01b81526004016111e6919061220a565b60206040518083038186803b1580156111fe57600080fd5b505afa158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b59190611a82565b90506112c08289836001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112699190611f73565b60206040518083038186803b15801561128157600080fd5b505afa158015611295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b99190611d28565b898b611899565b6113468588876001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112f19190611f73565b60206040518083038186803b15801561130957600080fd5b505afa15801561131d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113419190611d28565b6116f4565b5050505050505050565b60006001600160a01b03831661145357816001600160a01b0316630c0f6b71306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a857600080fd5b505afa1580156113bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e09190611d28565b6040518263ffffffff1660e01b81526004016113fc919061220a565b60206040518083038186803b15801561141457600080fd5b505afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c9190611a82565b90506114fc565b600061145f8484611502565b6040517f0c0f6b710000000000000000000000000000000000000000000000000000000081529092506001600160a01b0385169150630c0f6b71906114a890849060040161220a565b60206040518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f89190611a82565b9150505b92915050565b600080836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153e57600080fd5b505afa92505050801561158c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261158991810190611a82565b60015b611630576040517f1bf8ee70000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841690631bf8ee70906115d9908790600401611f73565b60206040518083038186803b1580156115f157600080fd5b505afa158015611605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116299190611d28565b9050611636565b50600191505b9250929050565b600080826001600160a01b0316846001600160a01b0316141561168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612119565b826001600160a01b0316846001600160a01b0316106116ac5782846116af565b83835b90925090506001600160a01b038216611636576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906121d3565b600080846001600160a01b031663a9059cbb8585604051602401611719929190611fec565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516117679190611eb9565b6000604051808303816000865af19150503d80600081146117a4576040519150601f19603f3d011682016040523d82523d6000602084013e6117a9565b606091505b50915091508180156117d35750805115806117d35750808060200190518101906117d39190611ccc565b611809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061203d565b5050505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab906118579087908790600401612213565b600060405180830381600087803b15801561187157600080fd5b505af1158015611885573d6000803e3d6000fd5b505050506118938184611943565b50505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab906118e09088908790600401612213565b600060405180830381600087803b1580156118fa57600080fd5b505af115801561190e573d6000803e3d6000fd5b505050506118098482866001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112f19190611f73565b604080516000808252602082019092526001600160a01b03841690839060405161196d9190611eb9565b60006040518083038185875af1925050503d80600081146119aa576040519150601f19603f3d011682016040523d82523d6000602084013e6119af565b606091505b50509050806119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290612176565b505050565b60008083601f840112611a00578182fd5b50813567ffffffffffffffff811115611a17578182fd5b602083019150836020808302850101111561163657600080fd5b60008083601f840112611a42578182fd5b50813567ffffffffffffffff811115611a59578182fd5b60208301915083602082850101111561163657600080fd5b803560ff8116811461022757600080fd5b600060208284031215611a93578081fd5b8151611a9e81612221565b9392505050565b60008060008060008060008060a0898b031215611ac0578384fd5b8835611acb81612221565b97506020890135611adb81612221565b9650604089013567ffffffffffffffff80821115611af7578586fd5b611b038c838d016119ef565b909850965060608b0135915080821115611b1b578586fd5b611b278c838d016119ef565b909650945060808b0135915080821115611b3f578384fd5b50611b4c8b828c01611a31565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611b78578182fd5b8635611b8381612221565b95506020870135611b9381612221565b94506040870135935060608701359250608087013567ffffffffffffffff811115611bbc578283fd5b611bc889828a01611a31565b979a9699509497509295939492505050565b60008060008060008060c08789031215611bf2578182fd5b8635611bfd81612221565b95506020870135945060408701359350606087013592506080870135611c2281612221565b8092505060a087013590509295509295509295565b6000806000806000806000806000806101408b8d031215611c56578182fd5b8a35611c6181612221565b995060208b0135985060408b0135975060608b0135965060808b0135611c8681612221565b955060a08b0135945060c08b0135611c9d81612239565b9350611cab60e08c01611a71565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600060208284031215611cdd578081fd5b8151611a9e81612239565b600060208284031215611cf9578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a9e578182fd5b600060208284031215611d39578081fd5b5051919050565b60008060408385031215611d52578182fd5b823591506020830135611d6481612221565b809150509250929050565b60008060408385031215611d81578182fd5b825191506020830151611d6481612221565b60008060408385031215611da5578182fd5b505080516020909101519092909150565b600080600080600060a08688031215611dcd578283fd5b8535945060208601359350604086013592506060860135611ded81612221565b949793965091946080013592915050565b60008060008060008060008060006101208a8c031215611e1c578283fd5b8935985060208a0135975060408a0135965060608a0135611e3c81612221565b955060808a0135945060a08a0135611e5381612239565b9350611e6160c08b01611a71565b925060e08a013591506101008a013590509295985092959850929598565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015611ed95760208186018101518583015201611ebf565b81811115611ee75782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601a908201527f494e53554646494349454e545f4252494447455f414d4f554e54000000000000604082015260600190565b60208082526019908201527f494e53554646494349454e545f544f4b454e5f414d4f554e5400000000000000604082015260600190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b6001600160a01b038116811461223657600080fd5b50565b801515811461223657600080fdfea264697066735822122077216a0c8b23573a39668fac63e6b0f3cb300b9ce9410d4b50499c15e96d054b64736f6c63430008000033",
      "srcmap": "297:6945:1:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "297:6945:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7140:100;;;;;;;;;;-1:-1:-1;7140:100:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3039:791;;;;;;;;;;-1:-1:-1;3039:791:1;;;;;:::i;:::-;;:::i;:::-;;4743:439;;;;;;;;;;-1:-1:-1;4743:439:1;;;;;:::i;:::-;;:::i;5188:619::-;;;;;;;;;;-1:-1:-1;5188:619:1;;;;;:::i;:::-;;:::i;3836:901::-;;;;;;;;;;-1:-1:-1;3836:901:1;;;;;:::i;:::-;;:::i;355:1315::-;;;;;;;;;;-1:-1:-1;355:1315:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;6919:215::-;;;;;;;;;;-1:-1:-1;6919:215:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1680:1353::-;;;;;;;;;;-1:-1:-1;1680:1353:1;;;;;:::i;:::-;;:::i;6725:188::-;;;;;;;;;;-1:-1:-1;6725:188:1;;;;;:::i;1992:184:2:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7140:100:1:-;7205:4;7140:100;;;;:::o;3039:791::-;3338:15;3393:4;-1:-1:-1;;;;;3364:43:1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3338:72;;3420:19;3479:4;-1:-1:-1;;;;;3450:47:1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3420:80;;3511:12;3526:51;3549:7;3558:11;3571:5;3526:22;:51::i;:::-;3511:66;;3587:13;3603:10;:42;;3636:9;3603:42;;;3616:17;3603:42;3655:78;;;;;3587:58;;-1:-1:-1;;;;;;3655:25:1;;;;;:78;;3681:10;;3701:4;;3587:58;;3715:8;;3725:1;;3728;;3731;;3655:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3743:80;3759:5;3766:9;3777:14;3793:15;3810:2;3814:8;3743:15;:80::i;:::-;;;3039:791;;;;;;;;;;;;;;:::o;4743:439::-;4965:162;4994:5;5013:9;5036:14;5064:15;5093:2;5109:8;4965:15;:162::i;:::-;;;5146:29;5165:5;5172:2;5146:18;:29::i;:::-;4743:439;;;;;;:::o;5188:619::-;5500:252;5539:5;5558:9;5581:14;5609:15;5646:4;5665:8;5687:10;5711:1;5726;5741;5500:25;:252::i;:::-;5771:29;5790:5;5797:2;5771:18;:29::i;:::-;5188:619;;;;;;;;;;:::o;3836:901::-;4115:15;4170:4;-1:-1:-1;;;;;4141:43:1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4115:72;;4197:19;4256:4;-1:-1:-1;;;;;4227:47:1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4197:80;;4287:20;4347:4;-1:-1:-1;;;;;4318:48:1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4287:82;;4380:12;4395:93;4418:7;4427:11;4440:47;4470:1;4474:12;4440:21;:47::i;:::-;4395:22;:93::i;:::-;4380:108;;4498:13;4514:10;:42;;4547:9;4514:42;;;4527:17;4514:42;4498:58;;4579:4;-1:-1:-1;;;;;4566:25:1;;4592:10;4612:4;4619:5;4626:8;4636:1;4639;4642;4566:78;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4654:76;4673:9;4684:15;4701:14;4717:2;4721:8;4654:18;:76::i;355:1315::-;580:20;602:19;561:8;454:15:2;442:8;:27;;434:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;633:20:1::1;693:4;-1:-1:-1::0;;;;;664:48:1::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;633:82;;725:19;784:4;-1:-1:-1::0;;;;;755:47:1::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;725:80;;815:12;853::::0;867:14:::1;885:31;896:5;903:12;885:10;:31::i;:::-;852:64;;;;938:7;:80;;964:53;::::0;;;;-1:-1:-1;;;;;964:45:1;::::1;::::0;::::1;::::0;:53:::1;::::0;1010:6;;964:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;938:80;;;948:5;938:80;930:88;;1039:98;1099:4;-1:-1:-1::0;;;;;1070:43:1::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1118:5;1125:11;1039:22;:98::i;:::-;1032:105;;500:1:2;;1171:4:1;-1:-1:-1::0;;;;;1158:31:1::1;;1190:10;1202:4;1208:9;1158:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1255:15;1272::::0;1304:4:::1;-1:-1:-1::0;;;;;1291:23:1::1;;1315:2;1291:27;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1254:64;;;;1329:14;1349:45;1375:5;1382:11;1349:25;:45::i;:::-;1328:66;;;1452:11;-1:-1:-1::0;;;;;1434:30:1::1;:6;-1:-1:-1::0;;;;;1434:30:1::1;;:72;;1489:7;1498;1434:72;;;1468:7;1477;1434:72;1404:102:::0;;-1:-1:-1;1404:102:1;-1:-1:-1;1524:31:1;;::::1;;1516:70;;;;;;;;;;;;:::i;:::-;1619:14;1604:11;:29;;1596:67;;;;;;;;;;;;:::i;:::-;500:1:2;;;;;;355:1315:1::0;;;;;;;;;;:::o;6919:215::-;7101:6;7119:8;;;1680:1353;1883:20;1905:17;1864:8;454:15:2;442:8;:27;;434:56;;;;;;;;;;;;:::i;:::-;1934:20:1::1;1994:4;-1:-1:-1::0;;;;;1965:48:1::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1934:82;;2026:19;2085:4;-1:-1:-1::0;;;;;2056:47:1::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2026:80;;2116:12;2131:47;2161:1;2165:12;2131:21;:47::i;:::-;2116:62;;2189:12;2216:97;2276:4;-1:-1:-1::0;;;;;2247:43:1::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2295:4;2301:11;2216:22;:97::i;:::-;2189:124;;2337:4;-1:-1:-1::0;;;;;2324:31:1::1;;2356:10;2368:4;2374:9;2324:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2421:15;2438::::0;2470:4:::1;-1:-1:-1::0;;;;;2457:23:1::1;;2489:4;2457:38;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2420:75;;;;2506:14;2526:53;2552:4;2566:11;2526:25;:53::i;:::-;2505:74;;;2635:11;-1:-1:-1::0;;;;;2617:30:1::1;:6;-1:-1:-1::0;;;;;2617:30:1::1;;:72;;2672:7;2681;2617:72;;;2651:7;2660;2617:72;2589:100:::0;;-1:-1:-1;2589:100:1;-1:-1:-1;2707:31:1;;::::1;;2699:70;;;;;;;;;;;;:::i;:::-;2800:12;2787:9;:25;;2779:63;;;;;;;;;;;;:::i;:::-;2852:58;2880:11;2893:2;2897:12;2852:27;:58::i;:::-;2920:106;2968:4;-1:-1:-1::0;;;;;2939:54:1::1;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2998:9;3009:12;3023:2;2920:10;:106::i;:::-;500:1:2;;;;;;;1680:1353:1::0;;;;;;;;;:::o;1992:184:2:-;2067:21;2136:7;-1:-1:-1;;;;;2120:32:2;;2160:6;2120:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2100:69;1992:184;-1:-1:-1;;;;1992:184:2:o;764:708:32:-;883:12;908:14;924;942:26;953:6;961;942:10;:26::i;:::-;907:61;;;;1178:7;1242:6;1250;1225:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1215:43;;;;;;1095:306;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1060:363;;1095:306;1060:363;;;;;764:708;-1:-1:-1;;;;;;764:708:32:o;5818:901:1:-;5891:20;5951:4;-1:-1:-1;;;;;5922:48:1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5891:82;;5983:19;6042:4;-1:-1:-1;;;;;6013:47:1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5983:80;;6073:15;6128:4;-1:-1:-1;;;;;6099:43:1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6073:72;;6156:12;6170:14;6188:31;6199:5;6206:12;6188:10;:31::i;:::-;6155:64;;;;6237:7;:62;;6294:5;6237:62;;;6247:44;;;;;-1:-1:-1;;;;;6247:36:1;;;;;:44;;6284:6;;6247:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6229:70;;6309:12;6324:108;6347:7;6356:11;6393:12;-1:-1:-1;;;;;6377:45:1;;6423:6;6377:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6324:108::-;6309:123;;6443:160;6469:6;6489:5;6521:4;-1:-1:-1;;;;;6508:28:1;;6545:4;6508:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6565:12;6591:2;6443:12;:160::i;:::-;6622:90;6650:11;6663:2;6674:11;-1:-1:-1;;;;;6667:29:1;;6705:4;6667:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6622:27;:90::i;:::-;5818:901;;;;;;;;:::o;2363:536:2:-;2449:21;-1:-1:-1;;;;;2486:19:2;;2482:411;;2576:7;-1:-1:-1;;;;;2560:40:2;;2659:4;-1:-1:-1;;;;;2630:54:2;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2560:145;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2519:200;;2482:411;;;2751:14;2769:26;2780:5;2787:7;2769:10;:26::i;:::-;2833:48;;;;;2748:47;;-1:-1:-1;;;;;;2833:40:2;;;-1:-1:-1;2833:40:2;;:48;;2748:47;;2833:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2809:73;;2482:411;;2363:536;;;;:::o;583:318::-;658:12;672:10;729:5;-1:-1:-1;;;;;698:51:2;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;698:53:2;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;694:201;;846:38;;;;;822:5;;-1:-1:-1;;;;;;846:31:2;;;;;:38;;878:5;;846:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;841:43;;694:201;;;;776:4;766:14;;694:201;583:318;;;;;:::o;334:341:32:-;409:14;425;469:6;-1:-1:-1;;;;;459:16:32;:6;-1:-1:-1;;;;;459:16:32;;;451:64;;;;;;;;;;;;:::i;:::-;553:6;-1:-1:-1;;;;;544:15:32;:6;-1:-1:-1;;;;;544:15:32;;:53;;582:6;590;544:53;;;563:6;571;544:53;525:72;;-1:-1:-1;525:72:32;-1:-1:-1;;;;;;615:20:32;;607:61;;;;;;;;;;;;:::i;605:390:36:-;785:12;799:17;820:5;-1:-1:-1;;;;;820:10:36;854;866:2;870:5;831:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:93;;;;895:7;:57;;;;-1:-1:-1;907:11:36;;:16;;:44;;;938:4;927:24;;;;;;;;;;;;:::i;:::-;887:101;;;;;;;;;;;;:::i;:::-;605:390;;;;;:::o;1752:234:2:-;1886:41;;;;;-1:-1:-1;;;;;1886:29:2;;;;;:41;;1916:2;;1920:6;;1886:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1937:42;1968:2;1972:6;1937:30;:42::i;:::-;1752:234;;;;:::o;1442:304::-;1604:41;;;;;-1:-1:-1;;;;;1604:29:2;;;;;:41;;1634:2;;1638:6;;1604:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1655:84;1683:8;1693:2;1704:8;-1:-1:-1;;;;;1697:26:2;;1732:4;1697:41;;;;;;;;;;;;;;;:::i;1446:197:36:-;1558:12;;;1518;1558;;;;;;;;;-1:-1:-1;;;;;1536:7:36;;;1551:5;;1536:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:54;;;1589:7;1581:55;;;;;;;;;;;;:::i;:::-;1446:197;;;:::o;14:404:38:-;;;147:3;140:4;132:6;128:17;124:27;114:2;;172:8;162;155:26;114:2;-1:-1:-1;202:20:38;;245:18;234:30;;231:2;;;284:8;274;267:26;231:2;328:4;320:6;316:17;304:29;;391:3;384:4;376;368:6;364:17;356:6;352:30;348:41;345:50;342:2;;;408:1;405;398:12;423:377;;;540:3;533:4;525:6;521:17;517:27;507:2;;565:8;555;548:26;507:2;-1:-1:-1;595:20:38;;638:18;627:30;;624:2;;;677:8;667;660:26;624:2;721:4;713:6;709:17;697:29;;773:3;766:4;757:6;749;745:19;741:30;738:39;735:2;;;790:1;787;780:12;805:158;873:20;;933:4;922:16;;912:27;;902:2;;953:1;950;943:12;968:263;;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;1149:9;1143:16;1168:33;1195:5;1168:33;:::i;:::-;1220:5;1049:182;-1:-1:-1;;;1049:182:38:o;1236:1396::-;;;;;;;;;1505:3;1493:9;1484:7;1480:23;1476:33;1473:2;;;1527:6;1519;1512:22;1473:2;1571:9;1558:23;1590:33;1617:5;1590:33;:::i;:::-;1642:5;-1:-1:-1;1699:2:38;1684:18;;1671:32;1712:35;1671:32;1712:35;:::i;:::-;1766:7;-1:-1:-1;1824:2:38;1809:18;;1796:32;1847:18;1877:14;;;1874:2;;;1909:6;1901;1894:22;1874:2;1953:76;2021:7;2012:6;2001:9;1997:22;1953:76;:::i;:::-;2048:8;;-1:-1:-1;1927:102:38;-1:-1:-1;2136:2:38;2121:18;;2108:32;;-1:-1:-1;2152:16:38;;;2149:2;;;2186:6;2178;2171:22;2149:2;2230:78;2300:7;2289:8;2278:9;2274:24;2230:78;:::i;:::-;2327:8;;-1:-1:-1;2204:104:38;-1:-1:-1;2415:3:38;2400:19;;2387:33;;-1:-1:-1;2432:16:38;;;2429:2;;;2466:6;2458;2451:22;2429:2;;2510:62;2564:7;2553:8;2542:9;2538:24;2510:62;:::i;:::-;1463:1169;;;;-1:-1:-1;1463:1169:38;;-1:-1:-1;1463:1169:38;;;;;;2591:8;-1:-1:-1;;;1463:1169:38:o;2637:849::-;;;;;;;2836:3;2824:9;2815:7;2811:23;2807:33;2804:2;;;2858:6;2850;2843:22;2804:2;2902:9;2889:23;2921:33;2948:5;2921:33;:::i;:::-;2973:5;-1:-1:-1;3030:2:38;3015:18;;3002:32;3043:35;3002:32;3043:35;:::i;:::-;3097:7;-1:-1:-1;3151:2:38;3136:18;;3123:32;;-1:-1:-1;3202:2:38;3187:18;;3174:32;;-1:-1:-1;3257:3:38;3242:19;;3229:33;3285:18;3274:30;;3271:2;;;3322:6;3314;3307:22;3271:2;3366:60;3418:7;3409:6;3398:9;3394:22;3366:60;:::i;:::-;2794:692;;;;-1:-1:-1;2794:692:38;;-1:-1:-1;2794:692:38;;3445:8;;2794:692;-1:-1:-1;;;2794:692:38:o;3491:677::-;;;;;;;3688:3;3676:9;3667:7;3663:23;3659:33;3656:2;;;3710:6;3702;3695:22;3656:2;3754:9;3741:23;3773:33;3800:5;3773:33;:::i;:::-;3825:5;-1:-1:-1;3877:2:38;3862:18;;3849:32;;-1:-1:-1;3928:2:38;3913:18;;3900:32;;-1:-1:-1;3979:2:38;3964:18;;3951:32;;-1:-1:-1;4035:3:38;4020:19;;4007:33;4049:35;4007:33;4049:35;:::i;:::-;4103:7;4093:17;;;4157:3;4146:9;4142:19;4129:33;4119:43;;3646:522;;;;;;;;:::o;4173:1026::-;;;;;;;;;;;4433:3;4421:9;4412:7;4408:23;4404:33;4401:2;;;4455:6;4447;4440:22;4401:2;4499:9;4486:23;4518:33;4545:5;4518:33;:::i;:::-;4570:5;-1:-1:-1;4622:2:38;4607:18;;4594:32;;-1:-1:-1;4673:2:38;4658:18;;4645:32;;-1:-1:-1;4724:2:38;4709:18;;4696:32;;-1:-1:-1;4780:3:38;4765:19;;4752:33;4794:35;4752:33;4794:35;:::i;:::-;4848:7;-1:-1:-1;4902:3:38;4887:19;;4874:33;;-1:-1:-1;4959:3:38;4944:19;;4931:33;4973:32;4931:33;4973:32;:::i;:::-;5024:7;-1:-1:-1;5050:39:38;5084:3;5069:19;;5050:39;:::i;:::-;5040:49;;5136:3;5125:9;5121:19;5108:33;5098:43;;5188:3;5177:9;5173:19;5160:33;5150:43;;4391:808;;;;;;;;;;;;;:::o;5204:257::-;;5324:2;5312:9;5303:7;5299:23;5295:32;5292:2;;;5345:6;5337;5330:22;5292:2;5382:9;5376:16;5401:30;5425:5;5401:30;:::i;5466:352::-;;5577:2;5565:9;5556:7;5552:23;5548:32;5545:2;;;5598:6;5590;5583:22;5545:2;5642:9;5629:23;5692:66;5685:5;5681:78;5674:5;5671:89;5661:2;;5779:6;5771;5764:22;6997:194;;7120:2;7108:9;7099:7;7095:23;7091:32;7088:2;;;7141:6;7133;7126:22;7088:2;-1:-1:-1;7169:16:38;;7078:113;-1:-1:-1;7078:113:38:o;7196:327::-;;;7325:2;7313:9;7304:7;7300:23;7296:32;7293:2;;;7346:6;7338;7331:22;7293:2;7387:9;7374:23;7364:33;;7447:2;7436:9;7432:18;7419:32;7460:33;7487:5;7460:33;:::i;:::-;7512:5;7502:15;;;7283:240;;;;;:::o;7528:324::-;;;7668:2;7656:9;7647:7;7643:23;7639:32;7636:2;;;7689:6;7681;7674:22;7636:2;7723:9;7717:16;7707:26;;7776:2;7765:9;7761:18;7755:25;7789:33;7816:5;7789:33;:::i;7857:255::-;;;7997:2;7985:9;7976:7;7972:23;7968:32;7965:2;;;8018:6;8010;8003:22;7965:2;-1:-1:-1;;8046:16:38;;8102:2;8087:18;;;8081:25;8046:16;;8081:25;;-1:-1:-1;7955:157:38:o;8117:533::-;;;;;;8297:3;8285:9;8276:7;8272:23;8268:33;8265:2;;;8319:6;8311;8304:22;8265:2;8360:9;8347:23;8337:33;;8417:2;8406:9;8402:18;8389:32;8379:42;;8468:2;8457:9;8453:18;8440:32;8430:42;;8522:2;8511:9;8507:18;8494:32;8535:33;8562:5;8535:33;:::i;:::-;8255:395;;;;-1:-1:-1;8255:395:38;;8639:3;8624:19;8611:33;;8255:395;-1:-1:-1;;8255:395:38:o;8655:882::-;;;;;;;;;;8898:3;8886:9;8877:7;8873:23;8869:33;8866:2;;;8920:6;8912;8905:22;8866:2;8961:9;8948:23;8938:33;;9018:2;9007:9;9003:18;8990:32;8980:42;;9069:2;9058:9;9054:18;9041:32;9031:42;;9123:2;9112:9;9108:18;9095:32;9136:33;9163:5;9136:33;:::i;:::-;9188:5;-1:-1:-1;9240:3:38;9225:19;;9212:33;;-1:-1:-1;9297:3:38;9282:19;;9269:33;9311:32;9269:33;9311:32;:::i;:::-;9362:7;-1:-1:-1;9388:39:38;9422:3;9407:19;;9388:39;:::i;:::-;9378:49;;9474:3;9463:9;9459:19;9446:33;9436:43;;9526:3;9515:9;9511:19;9498:33;9488:43;;8856:681;;;;;;;;;;;:::o;9542:368::-;9709:66;9804:2;9800:15;;;9796:24;;9784:37;;9855:15;;;;9851:24;9846:2;9837:12;;9830:46;9901:2;9892:12;;9689:221::o;9915:430::-;;10082:6;10076:13;10107:3;10119:129;10133:6;10130:1;10127:13;10119:129;;;10231:4;10215:14;;;10211:25;;10205:32;10192:11;;;10185:53;10148:12;10119:129;;;10266:6;10263:1;10260:13;10257:2;;;10301:3;10292:6;10287:3;10283:16;10276:29;10257:2;-1:-1:-1;10323:16:38;;;;;10052:293;-1:-1:-1;;10052:293:38:o;10350:724::-;10721:66;10709:79;;10825:2;10821:15;;;;10838:66;10817:88;10813:1;10804:11;;10797:109;10931:2;10922:12;;10915:28;10973:66;10968:2;10959:12;;10952:88;11065:2;11056:12;;10699:375::o;11079:226::-;-1:-1:-1;;;;;11243:55:38;;;;11225:74;;11213:2;11198:18;;11180:125::o;11310:398::-;-1:-1:-1;;;;;11591:15:38;;;11573:34;;11643:15;;;;11638:2;11623:18;;11616:43;11690:2;11675:18;;11668:34;;;;11500:2;11485:18;;11467:241::o;11713:693::-;-1:-1:-1;;;;;12103:15:38;;;12085:34;;12155:15;;;;12150:2;12135:18;;12128:43;12202:2;12187:18;;12180:34;;;;12245:2;12230:18;;12223:34;;;;12306:4;12294:17;12288:3;12273:19;;12266:46;12343:3;12328:19;;12321:35;12387:3;12372:19;;12365:35;;;;12011:3;11996:19;;11978:428::o;12411:297::-;-1:-1:-1;;;;;12603:55:38;;;;12585:74;;12690:2;12675:18;;12668:34;12573:2;12558:18;;12540:168::o;12713:187::-;12878:14;;12871:22;12853:41;;12841:2;12826:18;;12808:92::o;12905:248::-;13079:66;13067:79;;;;13049:98;;13037:2;13022:18;;13004:149::o;13158:355::-;13360:2;13342:21;;;13399:2;13379:18;;;13372:30;13438:33;13433:2;13418:18;;13411:61;13504:2;13489:18;;13332:181::o;13518:350::-;13720:2;13702:21;;;13759:2;13739:18;;;13732:30;13798:28;13793:2;13778:18;;13771:56;13859:2;13844:18;;13692:176::o;13873:349::-;14075:2;14057:21;;;14114:2;14094:18;;;14087:30;14153:27;14148:2;14133:18;;14126:55;14213:2;14198:18;;14047:175::o;14227:340::-;14429:2;14411:21;;;14468:2;14448:18;;;14441:30;14507:18;14502:2;14487:18;;14480:46;14558:2;14543:18;;14401:166::o;14572:399::-;14774:2;14756:21;;;14813:2;14793:18;;;14786:30;14852:34;14847:2;14832:18;;14825:62;14923:5;14918:2;14903:18;;14896:33;14961:3;14946:19;;14746:225::o;14976:399::-;15178:2;15160:21;;;15217:2;15197:18;;;15190:30;15256:34;15251:2;15236:18;;15229:62;15327:5;15322:2;15307:18;;15300:33;15365:3;15350:19;;15150:225::o;15380:352::-;15582:2;15564:21;;;15621:2;15601:18;;;15594:30;15660;15655:2;15640:18;;15633:58;15723:2;15708:18;;15554:178::o;15737:177::-;15883:25;;;15871:2;15856:18;;15838:76::o;15919:248::-;16093:25;;;16149:2;16134:18;;16127:34;16081:2;16066:18;;16048:119::o;16172:156::-;-1:-1:-1;;;;;16253:5:38;16249:54;16242:5;16239:65;16229:2;;16318:1;16315;16308:12;16229:2;16219:109;:::o;16333:120::-;16421:5;16414:13;16407:21;16400:5;16397:32;16387:2;;16443:1;16440;16433:12"
    },
    "contracts/MateriaOperator.sol:MateriaOperator": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "wrapper",
              "type": "address"
            }
          ],
          "name": "_wrapEth",
          "outputs": [
            {
              "internalType": "address",
              "name": "interoperable",
              "type": "address"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "values",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "onERC1155BatchReceived",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "onERC1155Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "interfaceId",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"wrapper\",\"type\":\"address\"}],\"name\":\"_wrapEth\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"interoperable\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MateriaOperator.sol\":\"MateriaOperator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/MateriaOperator.sol\":{\"keccak256\":\"0x0d1e0327e73a3b8a1b316f27d2ca2040917bb2c4c8bf0d0a6fd635798597d5a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://e86eebdbf5a6be0e77c9d6d849060a9ba537031956ca32a199eebaca576d51b5\",\"dweb:/ipfs/QmV6PgD4uuJhmywByCYPeAmRyENJsrY5xxmnxfY3pz9DXR\"]},\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IDoubleProxy.sol\":{\"keccak256\":\"0xb3775ff336d8ca9e0f7cb3b7e7c322d96c6360b53ec4a3ce45c6540d4f0126a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://6ec1948724904ecf9185f960548865d20a13969a840c926e9162e4bb354d18f6\",\"dweb:/ipfs/QmXbRyhfnW3E4Mij5y8v9JfHVB2vqxxwDgNfvHeu3wHiHJ\"]},\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IERC20WrapperV1.sol\":{\"keccak256\":\"0xb11ab8431790ecf02d6380277e277a1e44fcf1cbc81973301149e7080157ea4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b5dfc1840e8834ba39b1a634fdc2ba67d250adc4f8540f0ee33e16439ccb9cd\",\"dweb:/ipfs/QmTyF4vz44kcYuLuZAEW7tBxWuMiNZAojDKopi8oeudgk3\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]},\"contracts/interfaces/IEthItemMainInterface.sol\":{\"keccak256\":\"0x1bc85f4e88618a2d75910da856d5d43a87213463dae57054b44aa0e2220c43e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12240288d6503024c37ad756722f451ad3d819affd30b9d54ca0e06942c414b0\",\"dweb:/ipfs/QmU1hLcanobgXgEEXbbA56YPob23ghDXXqjK7gCCXbj3mT\"]},\"contracts/interfaces/IEthItemModelBase.sol\":{\"keccak256\":\"0x2ef4d851f1127e58dc496490f84ebe5690bff39c48a0ff43338d0087e3b114da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7db0efdf2c2c6c758fa12146e9aa31ebe1fc7b1eaa36d644ada5a7696b22c627\",\"dweb:/ipfs/QmXP62zz7qHJtQfxNRoxPsPiJxhXTKaKRfjCHGxetwgYyV\"]},\"contracts/interfaces/IMateriaFactory.sol\":{\"keccak256\":\"0xbb23d0937dd4e8da3b15e4e461603554abc9945d40b713f5f8f6e612d7e36dae\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://1cc856dd3375c7c345c693edda94b27d5c03d666843989308d6e61ef786b3718\",\"dweb:/ipfs/QmZaq9Vec3gVXNFoaWX56B2DQPYjpiDahdEoqogskHiJAp\"]},\"contracts/interfaces/IMateriaOrchestrator.sol\":{\"keccak256\":\"0x178eea6d9abe7758adbf30d406c9e3b1e05028441e6bf2661f6ac9d7441b06fc\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://b96f2d38b59f06bbfdf7d13e5a375e8eb6e1de507f40be7e7cbe37b34526a0e6\",\"dweb:/ipfs/QmSgMmM6Uk2EpgwNZxZpJf3yHHPQZ6LvcBWAV9DuPSnrCm\"]},\"contracts/interfaces/INativeV1.sol\":{\"keccak256\":\"0x923c01bc275842ef09bd388355d611e119f115b92c283beb11b88d783696bae5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://117e0b85dba46111c974aa4a9e6ddd46d9d75198e93b6e2c571604fb5b25f5cb\",\"dweb:/ipfs/QmaVw7wqeR8jWMW55VPp6F1cMcGhb4VLAG3fPpRwTHmn3D\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0xb2c4a89b2ee4538b41badb2b6e2d141deeca68be9298ec3e7f98b6812b4ee2a2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bf3e8a68c38541e0425dfd1f825371086a9a18eaadf12000e00b0440156198b\",\"dweb:/ipfs/QmcfasSoXaDg5A5dscMiKH41fWnCFnbJfpSAzn5gbMaVxd\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/MateriaOrchestrator.sol:MateriaOrchestrator": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "initialFactory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "initialBridgeToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "initialErc20Wrapper",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "initialDoubleProxy",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "initialLiquidityAdder",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "initialLiquidityRemover",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "initialSwapper",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "ETHEREUM_OBJECT_ID",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "bridgeAmountDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "EthAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "bridgeToken",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "doubleProxy",
          "outputs": [
            {
              "internalType": "contract IDoubleProxy",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "erc20Wrapper",
          "outputs": [
            {
              "internalType": "contract IERC20WrapperV1",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "contract IMateriaFactory",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountIn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsIn",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsOut",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            }
          ],
          "name": "getCrumbs",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "isEthItem",
          "outputs": [
            {
              "internalType": "address",
              "name": "collection",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "ethItem",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "itemId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "isNativeItem",
          "outputs": [
            {
              "internalType": "address",
              "name": "collection",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "native",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "itemId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "decimals",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidityAdder",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidityRemover",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "name": "onERC1155BatchReceived",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "payload",
              "type": "bytes"
            }
          ],
          "name": "onERC1155Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityAndUnwrap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "EthAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermitAndUnwrap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOrchestrator",
              "type": "address"
            }
          ],
          "name": "retire",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newBridgeToken",
              "type": "address"
            }
          ],
          "name": "setBridgeToken",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "materiaFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "swapFee",
              "type": "uint256"
            }
          ],
          "name": "setDefaultFees",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newDoubleProxy",
              "type": "address"
            }
          ],
          "name": "setDoubleProxy",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newErc20Wrapper",
              "type": "address"
            }
          ],
          "name": "setErc20Wrapper",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newEthereumObjectId",
              "type": "uint256"
            }
          ],
          "name": "setEthereumObjectId",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newFactory",
              "type": "address"
            }
          ],
          "name": "setFactory",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "materiaFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "swapFee",
              "type": "uint256"
            }
          ],
          "name": "setFees",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_adder",
              "type": "address"
            }
          ],
          "name": "setLiquidityAdder",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_remover",
              "type": "address"
            }
          ],
          "name": "setLiquidityRemover",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_swapper",
              "type": "address"
            }
          ],
          "name": "setSwapper",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "swapper",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "wrapper",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "payload",
              "type": "bytes"
            }
          ],
          "name": "wrap",
          "outputs": [
            {
              "internalType": "address",
              "name": "interoperable",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "itemAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "60806040523480156200001157600080fd5b50604051620030b0380380620030b083398101604081905262000034916200012c565b600480546001600160a01b03199081166001600160a01b03998a1617909155600680548216978916979097179096556005805487169588169590951790945560408051808201909152601681527f54484520455448455245554d204f424a454354204954000000000000000000006020909101527f186184b38c30620314f957b261f907a96e7bd12c377a91dcf1ef57fdea9aad3760075560008054861693871693909317909255600280548516918616919091179055600380548416918516919091179055600180549092169216919091179055620001c0565b80516001600160a01b03811681146200012757600080fd5b919050565b600080600080600080600060e0888a03121562000147578283fd5b62000152886200010f565b965062000162602089016200010f565b955062000172604089016200010f565b945062000182606089016200010f565b935062000192608089016200010f565b9250620001a260a089016200010f565b9150620001b260c089016200010f565b905092959891949750929550565b612ee080620001d06000396000f3fe6080604052600436106102f65760003560e01c806385f8c2591161018f578063bc197c81116100e1578063d7565a0c1161008a578063f46901ed11610064578063f46901ed14610807578063f4734b0c14610827578063fb3bdb41146105c657610330565b8063d7565a0c146107a7578063ee1fae3c146107c7578063f23a6e61146107e757610330565b8063cafd47df116100bb578063cafd47df14610752578063cbd99d0314610767578063d06ca61f1461078757610330565b8063bc197c81146106fb578063be745fff14610728578063c45a01551461073d57610330565b80639e6371ba11610143578063b6ec79fe1161011d578063b6ec79fe146106a8578063b9bdb4ef146106c8578063bb8a88bb146106e857610330565b80639e6371ba146106485780639f18401114610668578063ad615dec1461068857610330565b80639187aaca116101745780639187aaca146105f957806396c92f5e146104bd5780639c82f2a41461062857610330565b806385f8c259146105d95780638803dbee1461049d57610330565b80633d0c2a34116102485780635909889d116101fc5780637796473a116101d65780637796473a14610576578063781cef2a146105a65780637ff36ab5146105c657610330565b80635909889d1461038b5780635bb4780814610536578063678700e01461055657610330565b80634a25d94a1161022d5780634a25d94a146103cb5780634eb9b5921461050c57806355809f9f1461052157610330565b80633d0c2a34146104bd57806347883c37146104dd57610330565b80631b5f58c8116102aa57806323ae84011161028457806323ae8401146104685780632b3297f91461048857806338ed17391461049d57610330565b80631b5f58c8146103eb5780631df199531461040d5780631f00ca741461043b57610330565b8063104870fd116102db578063104870fd1461038b57806311f38472146103ab57806318cbafe5146103cb57610330565b806302af0fb514610335578063054d50d41461035557610330565b36610330576005546001600160a01b0316331461032e5760405162461bcd60e51b815260040161032590612b0d565b60405180910390fd5b005b600080fd5b34801561034157600080fd5b5061032e6103503660046122ed565b61083c565b34801561036157600080fd5b50610375610370366004612513565b610841565b6040516103829190612c5b565b60405180910390f35b34801561039757600080fd5b5061032e6103a6366004612191565b610858565b3480156103b757600080fd5b5061032e6103c6366004612100565b610879565b3480156103d757600080fd5b5061032e6103e63660046124aa565b6108f5565b3480156103f757600080fd5b50610400610911565b60405161038291906126ea565b34801561041957600080fd5b5061042d61042836600461206a565b610920565b6040516103829291906127db565b34801561044757600080fd5b5061045b61045636600461234c565b610c16565b6040516103829190612815565b34801561047457600080fd5b5061032e610483366004611ebc565b610c39565b34801561049457600080fd5b50610400610c73565b3480156104a957600080fd5b5061045b6104b83660046124aa565b610c82565b3480156104c957600080fd5b5061032e6104d8366004612134565b610ca3565b3480156104e957600080fd5b506104fd6104f8366004611ebc565b610cc0565b60405161038293929190612794565b34801561051857600080fd5b50610400610dde565b34801561052d57600080fd5b50610400610ded565b34801561054257600080fd5b5061032e610551366004611ebc565b610dfc565b34801561056257600080fd5b5061032e610571366004612575565b610e36565b34801561058257600080fd5b50610596610591366004611ebc565b610e56565b60405161038294939291906127b5565b3480156105b257600080fd5b5061032e6105c1366004611ebc565b610f8f565b61032e6105d4366004612391565b610fc9565b3480156105e557600080fd5b506103756105f4366004612513565b610fe4565b34801561060557600080fd5b50610619610614366004612226565b610ff1565b60405161038293929190612c64565b34801561063457600080fd5b5061032e610643366004611ebc565b61101a565b34801561065457600080fd5b5061032e610663366004611ebc565b611054565b34801561067457600080fd5b5061032e610683366004611ebc565b6110ca565b34801561069457600080fd5b506103756106a3366004612513565b611104565b3480156106b457600080fd5b5061032e6106c3366004612029565b611111565b3480156106d457600080fd5b5061032e6106e3366004612489565b611121565b6106196106f636600461253e565b611211565b34801561070757600080fd5b5061071b610716366004611ef4565b611238565b6040516103829190612859565b34801561073457600080fd5b5061037561123f565b34801561074957600080fd5b50610400611245565b34801561075e57600080fd5b50610400611254565b34801561077357600080fd5b5061032e610782366004611ebc565b611263565b34801561079357600080fd5b5061045b6107a236600461234c565b61129d565b3480156107b357600080fd5b5061032e6107c2366004611ebc565b6112b7565b3480156107d357600080fd5b5061032e6107e236600461253e565b6112f1565b3480156107f357600080fd5b5061071b610802366004611faf565b611306565b34801561081357600080fd5b5061032e610822366004611ebc565b6113a7565b34801561083357600080fd5b506104006113ef565b600755565b600061084e8484846113fe565b90505b9392505050565b60035461086d906001600160a01b0316611498565b50505050505050505050565b6004546006546001600160a01b03918216916311f384729161089e91849116876114bc565b84846040518463ffffffff1660e01b81526004016108be939291906127f4565b600060405180830381600087803b1580156108d857600080fd5b505af11580156108ec573d6000803e3d6000fd5b50505050505050565b60015461090a906001600160a01b0316611498565b5050505050565b6005546001600160a01b031681565b60008061092f8987308b61152c565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815288906001600160a01b038b169063dd62ed3e906109789030908c906004016126fe565b60206040518083038186803b15801561099057600080fd5b505afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190612305565b1015610a6b576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038a169063095ea7b390610a17908a90600019906004016127db565b602060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a69919061228e565b505b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526000906001600160a01b038916906340c10f1990610ab5908d908d906004016127db565b6040805180830381600087803b158015610ace57600080fd5b505af1158015610ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b06919061231d565b8094508192505050876001600160a01b031663f242432a3088848e6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190612305565b610b9c906012612e0f565b610ba790600a612d22565b610bb1908f612df0565b9650868a8a6040518763ffffffff1660e01b8152600401610bd79695949392919061273c565b600060405180830381600087803b158015610bf157600080fd5b505af1158015610c05573d6000803e3d6000fd5b505050505097509795505050505050565b600454606090610c30906001600160a01b03168484611629565b90505b92915050565b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b600154606090610c9a906001600160a01b0316611498565b95945050505050565b600354610cb8906001600160a01b0316611498565b505050505050565b600080806001600160a01b038416610ce057506000915081905080610dd7565b836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1957600080fd5b505afa925050508015610d49575060408051601f3d908101601f19168201909252610d4691810190611ed8565b60015b610d5b57506000915081905080610dd7565b806001866001600160a01b031663d4d5a06d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9757600080fd5b505afa158015610dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcf9190612305565b935093509350505b9193909250565b6000546001600160a01b031681565b6002546001600160a01b031681565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600354610e4b906001600160a01b0316611498565b505050505050505050565b6000806000806000610e6786610cc0565b919650909350905080610e8857600080600080945094509450945050610f88565b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ec157600080fd5b505afa925050508015610ef1575060408051601f3d908101601f19168201909252610eee91810190612305565b60015b610f0957600080600080945094509450945050610f88565b856001886001600160a01b031663d4d5a06d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4557600080fd5b505afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d9190612305565b919750955093509150505b9193509193565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600154610fde906001600160a01b0316611498565b50505050565b600061084e8484846117e3565b6002546000908190819061100d906001600160a01b0316611498565b9750975097945050505050565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600480546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163f2fde38b9161109c918591016126ea565b600060405180830381600087803b1580156110b657600080fd5b505af115801561090a573d6000803e3d6000fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600061084e848484611877565b61111c8382846118d9565b505050565b600480546040517f794366e60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163794366e69161116991869101612c5b565b600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b5050600480546040517f334dc4f30000000000000000000000000000000000000000000000000000000081526001600160a01b03909116935063334dc4f392506111e391859101612c5b565b600060405180830381600087803b1580156111fd57600080fd5b505af1158015610cb8573d6000803e3d6000fd5b6002546000908190819061122d906001600160a01b0316611498565b955095509592505050565b6000806000fd5b60075481565b6004546001600160a01b031681565b6003546001600160a01b031681565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600454606090610c30906001600160a01b031684846119d4565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60035461090a906001600160a01b0316611498565b600080611315838501856123f0565b509050806001141561133b57600254611336906001600160a01b0316611498565b61137a565b806002148061134a5750806003145b806113555750806004145b806113605750806005145b1561033057600154611336906001600160a01b0316611498565b507ff23a6e6100000000000000000000000000000000000000000000000000000000979650505050505050565b600480546040517ff46901ed0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163f46901ed9161109c918591016126ea565b6006546001600160a01b031681565b600080841161141f5760405162461bcd60e51b815260040161032590612a53565b60008311801561142f5750600082115b61144b5760405162461bcd60e51b815260040161032590612b6a565b6000611459856103e5611b6e565b905060006114678285611b6e565b905060006114818361147b886103e8611b6e565b90611bae565b905061148d8183612cbc565b979650505050505050565b3660008037600080366000845af43d6000803e8080156114b7573d6000f35b3d6000fd5b60008060006114cb8585611bdc565b915091508582826040516020016114e39291906125f6565b6040516020818303038152906040528051906020012060405160200161150a929190612669565b60408051601f1981840301815291905280516020909101209695505050505050565b600080856001600160a01b03166323b872dd86868660405160240161155393929190612718565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115a19190612630565b6000604051808303816000865af19150503d80600081146115de576040519150601f19603f3d011682016040523d82523d6000602084013e6115e3565b606091505b509150915081801561160d57508051158061160d57508080602001905181019061160d919061228e565b610cb85760405162461bcd60e51b815260040161032590612bc7565b606060028251101561164d5760405162461bcd60e51b815260040161032590612a1c565b815167ffffffffffffffff81111561167557634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561169e578160200160208202803683370190505b5090508281600183516116b19190612e0f565b815181106116cf57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250506000600183516116eb9190612e0f565b90505b80156117db5760008061175a8786611707600187612e0f565b8151811061172557634e487b7160e01b600052603260045260246000fd5b602002602001015187868151811061174d57634e487b7160e01b600052603260045260246000fd5b6020026020010151611c66565b9150915061179084848151811061178157634e487b7160e01b600052603260045260246000fd5b602002602001015183836117e3565b8461179c600186612e0f565b815181106117ba57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050505080806117d390612e26565b9150506116ee565b509392505050565b60008084116118045760405162461bcd60e51b8152600401610325906129bf565b6000831180156118145750600082115b6118305760405162461bcd60e51b815260040161032590612b6a565b60006118486103e86118428688611b6e565b90611b6e565b9050600061185c6103e56118428689611d4d565b905061186d600161147b8385612cbc565b9695505050505050565b60008084116118985760405162461bcd60e51b815260040161032590612962565b6000831180156118a85750600082115b6118c45760405162461bcd60e51b815260040161032590612b6a565b826118cf8584611b6e565b61084e9190612cbc565b600080846001600160a01b031663a9059cbb85856040516024016118fe9291906127db565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161194c9190612630565b6000604051808303816000865af19150503d8060008114611989576040519150601f19603f3d011682016040523d82523d6000602084013e61198e565b606091505b50915091508180156119b85750805115806119b85750808060200190518101906119b8919061228e565b61090a5760405162461bcd60e51b8152600401610325906128bd565b60606002825110156119f85760405162461bcd60e51b815260040161032590612a1c565b815167ffffffffffffffff811115611a2057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611a49578160200160208202803683370190505b5090508281600081518110611a6e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505060005b60018351611a8b9190612e0f565b8110156117db57600080611aed87868581518110611ab957634e487b7160e01b600052603260045260246000fd5b602002602001015187866001611acf9190612ca4565b8151811061174d57634e487b7160e01b600052603260045260246000fd5b91509150611b23848481518110611b1457634e487b7160e01b600052603260045260246000fd5b602002602001015183836113fe565b84611b2f856001612ca4565b81518110611b4d57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505050508080611b6690612e3d565b915050611a7d565b6000811580611b9257508282611b848183612df0565b9250611b909083612cbc565b145b610c335760405162461bcd60e51b8152600401610325906128f4565b600082611bbb8382612ca4565b9150811015610c335760405162461bcd60e51b81526004016103259061292b565b600080826001600160a01b0316846001600160a01b03161415611c115760405162461bcd60e51b815260040161032590612ab0565b826001600160a01b0316846001600160a01b031610611c31578284611c34565b83835b90925090506001600160a01b038216611c5f5760405162461bcd60e51b815260040161032590612c24565b9250929050565b6000806000611c758585611bdc565b509050600080611c868888886114bc565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611cbe57600080fd5b505afa158015611cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf691906122aa565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611d3b578082611d3e565b81815b90999098509650505050505050565b600082611d5a8382612e0f565b9150811115610c335760405162461bcd60e51b815260040161032590612886565b600082601f830112611d8b578081fd5b8135602067ffffffffffffffff821115611da757611da7612e6e565b808202611db5828201612c7a565b838152828101908684018388018501891015611dcf578687fd5b8693505b85841015611dfa578035611de681612e84565b835260019390930192918401918401611dd3565b50979650505050505050565b60008083601f840112611e17578182fd5b50813567ffffffffffffffff811115611e2e578182fd5b6020830191508360208083028501011115611c5f57600080fd5b60008083601f840112611e59578182fd5b50813567ffffffffffffffff811115611e70578182fd5b602083019150836020828501011115611c5f57600080fd5b80516dffffffffffffffffffffffffffff81168114611ea657600080fd5b919050565b803560ff81168114611ea657600080fd5b600060208284031215611ecd578081fd5b813561085181612e84565b600060208284031215611ee9578081fd5b815161085181612e84565b60008060008060008060008060a0898b031215611f0f578384fd5b8835611f1a81612e84565b97506020890135611f2a81612e84565b9650604089013567ffffffffffffffff80821115611f46578586fd5b611f528c838d01611e06565b909850965060608b0135915080821115611f6a578586fd5b611f768c838d01611e06565b909650945060808b0135915080821115611f8e578384fd5b50611f9b8b828c01611e48565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611fc7578182fd5b8635611fd281612e84565b95506020870135611fe281612e84565b94506040870135935060608701359250608087013567ffffffffffffffff81111561200b578283fd5b61201789828a01611e48565b979a9699509497509295939492505050565b60008060006060848603121561203d578283fd5b833561204881612e84565b925060208401359150604084013561205f81612e84565b809150509250925092565b600080600080600080600060c0888a031215612084578283fd5b873561208f81612e84565b96506020880135955060408801356120a681612e84565b945060608801356120b681612e84565b935060808801356120c681612e84565b925060a088013567ffffffffffffffff8111156120e1578283fd5b6120ed8a828b01611e48565b989b979a50959850939692959293505050565b600080600060608486031215612114578081fd5b833561211f81612e84565b95602085013595506040909401359392505050565b60008060008060008060c0878903121561214c578384fd5b863561215781612e84565b9550602087013594506040870135935060608701359250608087013561217c81612e84565b8092505060a087013590509295509295509295565b6000806000806000806000806000806101408b8d0312156121b0578384fd5b8a356121bb81612e84565b995060208b0135985060408b0135975060608b0135965060808b01356121e081612e84565b955060a08b0135945060c08b01356121f781612e9c565b935061220560e08c01611eab565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600080600080600080600060e0888a031215612240578081fd5b873561224b81612e84565b96506020880135955060408801359450606088013593506080880135925060a088013561227781612e84565b8092505060c0880135905092959891949750929550565b60006020828403121561229f578081fd5b815161085181612e9c565b6000806000606084860312156122be578081fd5b6122c784611e88565b92506122d560208501611e88565b9150604084015163ffffffff8116811461205f578182fd5b6000602082840312156122fe578081fd5b5035919050565b600060208284031215612316578081fd5b5051919050565b6000806040838503121561232f578182fd5b82519150602083015161234181612e84565b809150509250929050565b6000806040838503121561235e578182fd5b82359150602083013567ffffffffffffffff81111561237b578182fd5b61238785828601611d7b565b9150509250929050565b600080600080608085870312156123a6578182fd5b84359350602085013567ffffffffffffffff8111156123c3578283fd5b6123cf87828801611d7b565b93505060408501356123e081612e84565b9396929550929360600135925050565b60008060408385031215612402578182fd5b8235915060208084013567ffffffffffffffff80821115612421578384fd5b818601915086601f830112612434578384fd5b81358181111561244657612446612e6e565b61245884601f19601f84011601612c7a565b9150808252878482850101111561246d578485fd5b8084840185840137810190920192909252919491935090915050565b6000806040838503121561249b578182fd5b50508035926020909101359150565b600080600080600060a086880312156124c1578283fd5b8535945060208601359350604086013567ffffffffffffffff8111156124e5578384fd5b6124f188828901611d7b565b935050606086013561250281612e84565b949793965091946080013592915050565b600080600060608486031215612527578081fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215612555578283fd5b853594506020860135935060408601359250606086013561250281612e84565b60008060008060008060008060006101208a8c031215612593578283fd5b8935985060208a0135975060408a0135965060608a01356125b381612e84565b955060808a0135945060a08a01356125ca81612e9c565b93506125d860c08b01611eab565b925060e08a013591506101008a013590509295985092959850929598565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b818110156126505760208186018101518583015201612636565b8181111561265e5782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006001600160a01b03808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c084013781830160c090810191909152601f909201601f1916010195945050505050565b6001600160a01b039390931683529015156020830152604082015260600190565b6001600160a01b0394909416845291151560208401526040830152606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b6020808252825182820181905260009190848201906040850190845b8181101561284d57835183529284019291840191600101612831565b50909695505050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4f555460408201527f5055545f414d4f554e5400000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a20494e56414c49445f5041544800000000604082015260600190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4f6e6c79204574684974656d2063616e2073656e642045544820746f2074686960408201527f7320636f6e747261637400000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715612c9c57612c9c612e6e565b604052919050565b60008219821115612cb757612cb7612e58565b500190565b600082612cd757634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611612cee5750612d19565b818704821115612d0057612d00612e58565b80861615612d0d57918102915b9490941c938002612cdf565b94509492505050565b6000610c306000198484600082612d3b57506001610851565b81612d4857506000610851565b8160018114612d5e5760028114612d6857612d95565b6001915050610851565b60ff841115612d7957612d79612e58565b6001841b915084821115612d8f57612d8f612e58565b50610851565b5060208310610133831016604e8410600b8410161715612dc8575081810a83811115612dc357612dc3612e58565b610851565b612dd58484846001612cdc565b808604821115612de757612de7612e58565b02949350505050565b6000816000190483118215151615612e0a57612e0a612e58565b500290565b600082821015612e2157612e21612e58565b500390565b600081612e3557612e35612e58565b506000190190565b6000600019821415612e5157612e51612e58565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612e9957600080fd5b50565b8015158114612e9957600080fdfea2646970667358221220fc1b0cdaff85fc1884e984debbd69766206f3aea4539dcd9f940d89c5ad1fc5664736f6c63430008000033",
          "sourceMap": "1028:13465:3:-:0;;;1453:712;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1734:7;:41;;-1:-1:-1;;;;;;1734:41:3;;;-1:-1:-1;;;;;1734:41:3;;;;;;;1785:11;:40;;;;;;;;;;;;;;1835:12;:51;;;;;;;;;;;;;;1935:31;;;;;;;;;;;;;;;;;;1925:42;1896:18;:72;-1:-1:-1;1978:46:3;;;;;;;;;;;;;;2034:14;:38;;;;;;;;;;;;;-1:-1:-1;2082:42:3;;;;;;;;;;;;;-1:-1:-1;2134:24:3;;;;;;;;;;;;;1028:13465;;14:179:38;95:13;;-1:-1:-1;;;;;137:31:38;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:746::-;;;;;;;;423:3;411:9;402:7;398:23;394:33;391:2;;;445:6;437;430:22;391:2;473:42;505:9;473:42;:::i;:::-;463:52;;534:51;581:2;570:9;566:18;534:51;:::i;:::-;524:61;;604:51;651:2;640:9;636:18;604:51;:::i;:::-;594:61;;674:51;721:2;710:9;706:18;674:51;:::i;:::-;664:61;;744:52;791:3;780:9;776:19;744:52;:::i;:::-;734:62;;815:52;862:3;851:9;847:19;815:52;:::i;:::-;805:62;;886:52;933:3;922:9;918:19;886:52;:::i;:::-;876:62;;381:563;;;;;;;;;;:::o;:::-;1028:13465:3;;;;;;"
        },
        "deployedBytecode": {
          "object": "6080604052600436106102f65760003560e01c806385f8c2591161018f578063bc197c81116100e1578063d7565a0c1161008a578063f46901ed11610064578063f46901ed14610807578063f4734b0c14610827578063fb3bdb41146105c657610330565b8063d7565a0c146107a7578063ee1fae3c146107c7578063f23a6e61146107e757610330565b8063cafd47df116100bb578063cafd47df14610752578063cbd99d0314610767578063d06ca61f1461078757610330565b8063bc197c81146106fb578063be745fff14610728578063c45a01551461073d57610330565b80639e6371ba11610143578063b6ec79fe1161011d578063b6ec79fe146106a8578063b9bdb4ef146106c8578063bb8a88bb146106e857610330565b80639e6371ba146106485780639f18401114610668578063ad615dec1461068857610330565b80639187aaca116101745780639187aaca146105f957806396c92f5e146104bd5780639c82f2a41461062857610330565b806385f8c259146105d95780638803dbee1461049d57610330565b80633d0c2a34116102485780635909889d116101fc5780637796473a116101d65780637796473a14610576578063781cef2a146105a65780637ff36ab5146105c657610330565b80635909889d1461038b5780635bb4780814610536578063678700e01461055657610330565b80634a25d94a1161022d5780634a25d94a146103cb5780634eb9b5921461050c57806355809f9f1461052157610330565b80633d0c2a34146104bd57806347883c37146104dd57610330565b80631b5f58c8116102aa57806323ae84011161028457806323ae8401146104685780632b3297f91461048857806338ed17391461049d57610330565b80631b5f58c8146103eb5780631df199531461040d5780631f00ca741461043b57610330565b8063104870fd116102db578063104870fd1461038b57806311f38472146103ab57806318cbafe5146103cb57610330565b806302af0fb514610335578063054d50d41461035557610330565b36610330576005546001600160a01b0316331461032e5760405162461bcd60e51b815260040161032590612b0d565b60405180910390fd5b005b600080fd5b34801561034157600080fd5b5061032e6103503660046122ed565b61083c565b34801561036157600080fd5b50610375610370366004612513565b610841565b6040516103829190612c5b565b60405180910390f35b34801561039757600080fd5b5061032e6103a6366004612191565b610858565b3480156103b757600080fd5b5061032e6103c6366004612100565b610879565b3480156103d757600080fd5b5061032e6103e63660046124aa565b6108f5565b3480156103f757600080fd5b50610400610911565b60405161038291906126ea565b34801561041957600080fd5b5061042d61042836600461206a565b610920565b6040516103829291906127db565b34801561044757600080fd5b5061045b61045636600461234c565b610c16565b6040516103829190612815565b34801561047457600080fd5b5061032e610483366004611ebc565b610c39565b34801561049457600080fd5b50610400610c73565b3480156104a957600080fd5b5061045b6104b83660046124aa565b610c82565b3480156104c957600080fd5b5061032e6104d8366004612134565b610ca3565b3480156104e957600080fd5b506104fd6104f8366004611ebc565b610cc0565b60405161038293929190612794565b34801561051857600080fd5b50610400610dde565b34801561052d57600080fd5b50610400610ded565b34801561054257600080fd5b5061032e610551366004611ebc565b610dfc565b34801561056257600080fd5b5061032e610571366004612575565b610e36565b34801561058257600080fd5b50610596610591366004611ebc565b610e56565b60405161038294939291906127b5565b3480156105b257600080fd5b5061032e6105c1366004611ebc565b610f8f565b61032e6105d4366004612391565b610fc9565b3480156105e557600080fd5b506103756105f4366004612513565b610fe4565b34801561060557600080fd5b50610619610614366004612226565b610ff1565b60405161038293929190612c64565b34801561063457600080fd5b5061032e610643366004611ebc565b61101a565b34801561065457600080fd5b5061032e610663366004611ebc565b611054565b34801561067457600080fd5b5061032e610683366004611ebc565b6110ca565b34801561069457600080fd5b506103756106a3366004612513565b611104565b3480156106b457600080fd5b5061032e6106c3366004612029565b611111565b3480156106d457600080fd5b5061032e6106e3366004612489565b611121565b6106196106f636600461253e565b611211565b34801561070757600080fd5b5061071b610716366004611ef4565b611238565b6040516103829190612859565b34801561073457600080fd5b5061037561123f565b34801561074957600080fd5b50610400611245565b34801561075e57600080fd5b50610400611254565b34801561077357600080fd5b5061032e610782366004611ebc565b611263565b34801561079357600080fd5b5061045b6107a236600461234c565b61129d565b3480156107b357600080fd5b5061032e6107c2366004611ebc565b6112b7565b3480156107d357600080fd5b5061032e6107e236600461253e565b6112f1565b3480156107f357600080fd5b5061071b610802366004611faf565b611306565b34801561081357600080fd5b5061032e610822366004611ebc565b6113a7565b34801561083357600080fd5b506104006113ef565b600755565b600061084e8484846113fe565b90505b9392505050565b60035461086d906001600160a01b0316611498565b50505050505050505050565b6004546006546001600160a01b03918216916311f384729161089e91849116876114bc565b84846040518463ffffffff1660e01b81526004016108be939291906127f4565b600060405180830381600087803b1580156108d857600080fd5b505af11580156108ec573d6000803e3d6000fd5b50505050505050565b60015461090a906001600160a01b0316611498565b5050505050565b6005546001600160a01b031681565b60008061092f8987308b61152c565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815288906001600160a01b038b169063dd62ed3e906109789030908c906004016126fe565b60206040518083038186803b15801561099057600080fd5b505afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190612305565b1015610a6b576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038a169063095ea7b390610a17908a90600019906004016127db565b602060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a69919061228e565b505b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526000906001600160a01b038916906340c10f1990610ab5908d908d906004016127db565b6040805180830381600087803b158015610ace57600080fd5b505af1158015610ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b06919061231d565b8094508192505050876001600160a01b031663f242432a3088848e6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190612305565b610b9c906012612e0f565b610ba790600a612d22565b610bb1908f612df0565b9650868a8a6040518763ffffffff1660e01b8152600401610bd79695949392919061273c565b600060405180830381600087803b158015610bf157600080fd5b505af1158015610c05573d6000803e3d6000fd5b505050505097509795505050505050565b600454606090610c30906001600160a01b03168484611629565b90505b92915050565b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b600154606090610c9a906001600160a01b0316611498565b95945050505050565b600354610cb8906001600160a01b0316611498565b505050505050565b600080806001600160a01b038416610ce057506000915081905080610dd7565b836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1957600080fd5b505afa925050508015610d49575060408051601f3d908101601f19168201909252610d4691810190611ed8565b60015b610d5b57506000915081905080610dd7565b806001866001600160a01b031663d4d5a06d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9757600080fd5b505afa158015610dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcf9190612305565b935093509350505b9193909250565b6000546001600160a01b031681565b6002546001600160a01b031681565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600354610e4b906001600160a01b0316611498565b505050505050505050565b6000806000806000610e6786610cc0565b919650909350905080610e8857600080600080945094509450945050610f88565b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ec157600080fd5b505afa925050508015610ef1575060408051601f3d908101601f19168201909252610eee91810190612305565b60015b610f0957600080600080945094509450945050610f88565b856001886001600160a01b031663d4d5a06d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4557600080fd5b505afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d9190612305565b919750955093509150505b9193509193565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600154610fde906001600160a01b0316611498565b50505050565b600061084e8484846117e3565b6002546000908190819061100d906001600160a01b0316611498565b9750975097945050505050565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600480546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163f2fde38b9161109c918591016126ea565b600060405180830381600087803b1580156110b657600080fd5b505af115801561090a573d6000803e3d6000fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600061084e848484611877565b61111c8382846118d9565b505050565b600480546040517f794366e60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163794366e69161116991869101612c5b565b600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b5050600480546040517f334dc4f30000000000000000000000000000000000000000000000000000000081526001600160a01b03909116935063334dc4f392506111e391859101612c5b565b600060405180830381600087803b1580156111fd57600080fd5b505af1158015610cb8573d6000803e3d6000fd5b6002546000908190819061122d906001600160a01b0316611498565b955095509592505050565b6000806000fd5b60075481565b6004546001600160a01b031681565b6003546001600160a01b031681565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600454606090610c30906001600160a01b031684846119d4565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60035461090a906001600160a01b0316611498565b600080611315838501856123f0565b509050806001141561133b57600254611336906001600160a01b0316611498565b61137a565b806002148061134a5750806003145b806113555750806004145b806113605750806005145b1561033057600154611336906001600160a01b0316611498565b507ff23a6e6100000000000000000000000000000000000000000000000000000000979650505050505050565b600480546040517ff46901ed0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163f46901ed9161109c918591016126ea565b6006546001600160a01b031681565b600080841161141f5760405162461bcd60e51b815260040161032590612a53565b60008311801561142f5750600082115b61144b5760405162461bcd60e51b815260040161032590612b6a565b6000611459856103e5611b6e565b905060006114678285611b6e565b905060006114818361147b886103e8611b6e565b90611bae565b905061148d8183612cbc565b979650505050505050565b3660008037600080366000845af43d6000803e8080156114b7573d6000f35b3d6000fd5b60008060006114cb8585611bdc565b915091508582826040516020016114e39291906125f6565b6040516020818303038152906040528051906020012060405160200161150a929190612669565b60408051601f1981840301815291905280516020909101209695505050505050565b600080856001600160a01b03166323b872dd86868660405160240161155393929190612718565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115a19190612630565b6000604051808303816000865af19150503d80600081146115de576040519150601f19603f3d011682016040523d82523d6000602084013e6115e3565b606091505b509150915081801561160d57508051158061160d57508080602001905181019061160d919061228e565b610cb85760405162461bcd60e51b815260040161032590612bc7565b606060028251101561164d5760405162461bcd60e51b815260040161032590612a1c565b815167ffffffffffffffff81111561167557634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561169e578160200160208202803683370190505b5090508281600183516116b19190612e0f565b815181106116cf57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250506000600183516116eb9190612e0f565b90505b80156117db5760008061175a8786611707600187612e0f565b8151811061172557634e487b7160e01b600052603260045260246000fd5b602002602001015187868151811061174d57634e487b7160e01b600052603260045260246000fd5b6020026020010151611c66565b9150915061179084848151811061178157634e487b7160e01b600052603260045260246000fd5b602002602001015183836117e3565b8461179c600186612e0f565b815181106117ba57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050505080806117d390612e26565b9150506116ee565b509392505050565b60008084116118045760405162461bcd60e51b8152600401610325906129bf565b6000831180156118145750600082115b6118305760405162461bcd60e51b815260040161032590612b6a565b60006118486103e86118428688611b6e565b90611b6e565b9050600061185c6103e56118428689611d4d565b905061186d600161147b8385612cbc565b9695505050505050565b60008084116118985760405162461bcd60e51b815260040161032590612962565b6000831180156118a85750600082115b6118c45760405162461bcd60e51b815260040161032590612b6a565b826118cf8584611b6e565b61084e9190612cbc565b600080846001600160a01b031663a9059cbb85856040516024016118fe9291906127db565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161194c9190612630565b6000604051808303816000865af19150503d8060008114611989576040519150601f19603f3d011682016040523d82523d6000602084013e61198e565b606091505b50915091508180156119b85750805115806119b85750808060200190518101906119b8919061228e565b61090a5760405162461bcd60e51b8152600401610325906128bd565b60606002825110156119f85760405162461bcd60e51b815260040161032590612a1c565b815167ffffffffffffffff811115611a2057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611a49578160200160208202803683370190505b5090508281600081518110611a6e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505060005b60018351611a8b9190612e0f565b8110156117db57600080611aed87868581518110611ab957634e487b7160e01b600052603260045260246000fd5b602002602001015187866001611acf9190612ca4565b8151811061174d57634e487b7160e01b600052603260045260246000fd5b91509150611b23848481518110611b1457634e487b7160e01b600052603260045260246000fd5b602002602001015183836113fe565b84611b2f856001612ca4565b81518110611b4d57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505050508080611b6690612e3d565b915050611a7d565b6000811580611b9257508282611b848183612df0565b9250611b909083612cbc565b145b610c335760405162461bcd60e51b8152600401610325906128f4565b600082611bbb8382612ca4565b9150811015610c335760405162461bcd60e51b81526004016103259061292b565b600080826001600160a01b0316846001600160a01b03161415611c115760405162461bcd60e51b815260040161032590612ab0565b826001600160a01b0316846001600160a01b031610611c31578284611c34565b83835b90925090506001600160a01b038216611c5f5760405162461bcd60e51b815260040161032590612c24565b9250929050565b6000806000611c758585611bdc565b509050600080611c868888886114bc565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611cbe57600080fd5b505afa158015611cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf691906122aa565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611d3b578082611d3e565b81815b90999098509650505050505050565b600082611d5a8382612e0f565b9150811115610c335760405162461bcd60e51b815260040161032590612886565b600082601f830112611d8b578081fd5b8135602067ffffffffffffffff821115611da757611da7612e6e565b808202611db5828201612c7a565b838152828101908684018388018501891015611dcf578687fd5b8693505b85841015611dfa578035611de681612e84565b835260019390930192918401918401611dd3565b50979650505050505050565b60008083601f840112611e17578182fd5b50813567ffffffffffffffff811115611e2e578182fd5b6020830191508360208083028501011115611c5f57600080fd5b60008083601f840112611e59578182fd5b50813567ffffffffffffffff811115611e70578182fd5b602083019150836020828501011115611c5f57600080fd5b80516dffffffffffffffffffffffffffff81168114611ea657600080fd5b919050565b803560ff81168114611ea657600080fd5b600060208284031215611ecd578081fd5b813561085181612e84565b600060208284031215611ee9578081fd5b815161085181612e84565b60008060008060008060008060a0898b031215611f0f578384fd5b8835611f1a81612e84565b97506020890135611f2a81612e84565b9650604089013567ffffffffffffffff80821115611f46578586fd5b611f528c838d01611e06565b909850965060608b0135915080821115611f6a578586fd5b611f768c838d01611e06565b909650945060808b0135915080821115611f8e578384fd5b50611f9b8b828c01611e48565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611fc7578182fd5b8635611fd281612e84565b95506020870135611fe281612e84565b94506040870135935060608701359250608087013567ffffffffffffffff81111561200b578283fd5b61201789828a01611e48565b979a9699509497509295939492505050565b60008060006060848603121561203d578283fd5b833561204881612e84565b925060208401359150604084013561205f81612e84565b809150509250925092565b600080600080600080600060c0888a031215612084578283fd5b873561208f81612e84565b96506020880135955060408801356120a681612e84565b945060608801356120b681612e84565b935060808801356120c681612e84565b925060a088013567ffffffffffffffff8111156120e1578283fd5b6120ed8a828b01611e48565b989b979a50959850939692959293505050565b600080600060608486031215612114578081fd5b833561211f81612e84565b95602085013595506040909401359392505050565b60008060008060008060c0878903121561214c578384fd5b863561215781612e84565b9550602087013594506040870135935060608701359250608087013561217c81612e84565b8092505060a087013590509295509295509295565b6000806000806000806000806000806101408b8d0312156121b0578384fd5b8a356121bb81612e84565b995060208b0135985060408b0135975060608b0135965060808b01356121e081612e84565b955060a08b0135945060c08b01356121f781612e9c565b935061220560e08c01611eab565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600080600080600080600060e0888a031215612240578081fd5b873561224b81612e84565b96506020880135955060408801359450606088013593506080880135925060a088013561227781612e84565b8092505060c0880135905092959891949750929550565b60006020828403121561229f578081fd5b815161085181612e9c565b6000806000606084860312156122be578081fd5b6122c784611e88565b92506122d560208501611e88565b9150604084015163ffffffff8116811461205f578182fd5b6000602082840312156122fe578081fd5b5035919050565b600060208284031215612316578081fd5b5051919050565b6000806040838503121561232f578182fd5b82519150602083015161234181612e84565b809150509250929050565b6000806040838503121561235e578182fd5b82359150602083013567ffffffffffffffff81111561237b578182fd5b61238785828601611d7b565b9150509250929050565b600080600080608085870312156123a6578182fd5b84359350602085013567ffffffffffffffff8111156123c3578283fd5b6123cf87828801611d7b565b93505060408501356123e081612e84565b9396929550929360600135925050565b60008060408385031215612402578182fd5b8235915060208084013567ffffffffffffffff80821115612421578384fd5b818601915086601f830112612434578384fd5b81358181111561244657612446612e6e565b61245884601f19601f84011601612c7a565b9150808252878482850101111561246d578485fd5b8084840185840137810190920192909252919491935090915050565b6000806040838503121561249b578182fd5b50508035926020909101359150565b600080600080600060a086880312156124c1578283fd5b8535945060208601359350604086013567ffffffffffffffff8111156124e5578384fd5b6124f188828901611d7b565b935050606086013561250281612e84565b949793965091946080013592915050565b600080600060608486031215612527578081fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215612555578283fd5b853594506020860135935060408601359250606086013561250281612e84565b60008060008060008060008060006101208a8c031215612593578283fd5b8935985060208a0135975060408a0135965060608a01356125b381612e84565b955060808a0135945060a08a01356125ca81612e9c565b93506125d860c08b01611eab565b925060e08a013591506101008a013590509295985092959850929598565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b818110156126505760208186018101518583015201612636565b8181111561265e5782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006001600160a01b03808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c084013781830160c090810191909152601f909201601f1916010195945050505050565b6001600160a01b039390931683529015156020830152604082015260600190565b6001600160a01b0394909416845291151560208401526040830152606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b6020808252825182820181905260009190848201906040850190845b8181101561284d57835183529284019291840191600101612831565b50909695505050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4f555460408201527f5055545f414d4f554e5400000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a20494e56414c49445f5041544800000000604082015260600190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4f6e6c79204574684974656d2063616e2073656e642045544820746f2074686960408201527f7320636f6e747261637400000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715612c9c57612c9c612e6e565b604052919050565b60008219821115612cb757612cb7612e58565b500190565b600082612cd757634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611612cee5750612d19565b818704821115612d0057612d00612e58565b80861615612d0d57918102915b9490941c938002612cdf565b94509492505050565b6000610c306000198484600082612d3b57506001610851565b81612d4857506000610851565b8160018114612d5e5760028114612d6857612d95565b6001915050610851565b60ff841115612d7957612d79612e58565b6001841b915084821115612d8f57612d8f612e58565b50610851565b5060208310610133831016604e8410600b8410161715612dc8575081810a83811115612dc357612dc3612e58565b610851565b612dd58484846001612cdc565b808604821115612de757612de7612e58565b02949350505050565b6000816000190483118215151615612e0a57612e0a612e58565b500290565b600082821015612e2157612e21612e58565b500390565b600081612e3557612e35612e58565b506000190190565b6000600019821415612e5157612e51612e58565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612e9957600080fd5b50565b8015158114612e9957600080fdfea2646970667358221220fc1b0cdaff85fc1884e984debbd69766206f3aea4539dcd9f940d89c5ad1fc5664736f6c63430008000033",
          "sourceMap": "1028:13465:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4403:12;;-1:-1:-1;;;;;4403:12:3;4381:10;:35;4373:90;;;;-1:-1:-1;;;4373:90:3;;;;;;;:::i;:::-;;;;;;;;;1028:13465;;;;;2715:141;;;;;;;;;;-1:-1:-1;2715:141:3;;;;;:::i;:::-;;:::i;11016:242::-;;;;;;;;;;-1:-1:-1;11016:242:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7602:342;;;;;;;;;;-1:-1:-1;7602:342:3;;;;;:::i;:::-;;:::i;3337:249::-;;;;;;;;;;-1:-1:-1;3337:249:3;;;;;:::i;:::-;;:::i;10205:221::-;;;;;;;;;;-1:-1:-1;10205:221:3;;;;;:::i;:::-;;:::i;1314:44::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13656:835::-;;;;;;;;;;-1:-1:-1;13656:835:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;11759:242::-;;;;;;;;;;-1:-1:-1;11759:242:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2310:127::-;;;;;;;;;;-1:-1:-1;2310:127:3;;;;;:::i;:::-;;:::i;1141:31::-;;;;;;;;;;;;;:::i;9239:259::-;;;;;;;;;;-1:-1:-1;9239:259:3;;;;;:::i;:::-;;:::i;8282:261::-;;;;;;;;;;-1:-1:-1;8282:261:3;;;;;:::i;:::-;;:::i;12125:591::-;;;;;;;;;;-1:-1:-1;12125:591:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;1094:40::-;;;;;;;;;;;;;:::i;1178:38::-;;;;;;;;;;;;;:::i;2589:120::-;;;;;;;;;;-1:-1:-1;2589:120:3;;;;;:::i;:::-;;:::i;7950:322::-;;;;;;;;;;-1:-1:-1;7950:322:3;;;;;:::i;:::-;;:::i;12827:696::-;;;;;;;;;;-1:-1:-1;12827:696:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;3082:117::-;;;;;;;;;;-1:-1:-1;3082:117:3;;;;;:::i;:::-;;:::i;9769:203::-;;;;;;:::i;:::-;;:::i;11264:241::-;;;;;;;;;;-1:-1:-1;11264:241:3;;;;;:::i;:::-;;:::i;5975:431::-;;;;;;;;;;-1:-1:-1;5975:431:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2862:99::-;;;;;;;;;;-1:-1:-1;2862:99:3;;;;;:::i;:::-;;:::i;3205:126::-;;;;;;;;;;-1:-1:-1;3205:126:3;;;;;:::i;:::-;;:::i;2967:109::-;;;;;;;;;;-1:-1:-1;2967:109:3;;;;;:::i;:::-;;:::i;10792:218::-;;;;;;;;;;-1:-1:-1;10792:218:3;;;;;:::i;:::-;;:::i;3923:193::-;;;;;;;;;;-1:-1:-1;3923:193:3;;;;;:::i;:::-;;:::i;3592:188::-;;;;;;;;;;-1:-1:-1;3592:188:3;;;;;:::i;:::-;;:::i;6412:395::-;;;;;;:::i;:::-;;:::i;5494:217::-;;;;;;;;;;-1:-1:-1;5494:217:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1404:42::-;;;;;;;;;;;;;:::i;1269:39::-;;;;;;;;;;;;;:::i;1222:40::-;;;;;;;;;;;;;:::i;2171:133::-;;;;;;;;;;-1:-1:-1;2171:133:3;;;;;:::i;:::-;;:::i;11511:242::-;;;;;;;;;;-1:-1:-1;11511:242:3;;;;;:::i;:::-;;:::i;2443:140::-;;;;;;;;;;-1:-1:-1;2443:140:3;;;;;:::i;:::-;;:::i;7366:230::-;;;;;;;;;;-1:-1:-1;7366:230:3;;;;;:::i;:::-;;:::i;4879:609::-;;;;;;;;;;-1:-1:-1;4879:609:3;;;;;:::i;:::-;;:::i;3786:99::-;;;;;;;;;;-1:-1:-1;3786:99:3;;;;;:::i;:::-;;:::i;1364:34::-;;;;;;;;;;;;;:::i;2715:141::-;2809:18:::1;:40:::0;2715:141::o;11016:242::-;11155:17;11191:60;11219:8;11229:9;11240:10;11191:27;:60::i;:::-;11184:67;;11016:242;;;;;;:::o;7602:342::-;7920:16;;7910:27;;-1:-1:-1;;;;;7920:16:3;7910:9;:27::i;:::-;7602:342;;;;;;;;;;:::o;3337:249::-;3472:7:::1;::::0;3537:11:::1;::::0;-1:-1:-1;;;;;3472:7:3;;::::1;::::0;:15:::1;::::0;3488:69:::1;::::0;3472:7;;3537:11:::1;3551:5:::0;3488:22:::1;:69::i;:::-;3559:10;3571:7;3472:107;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3337:249:::0;;;:::o;10205:221::-;10411:7;;10401:18;;-1:-1:-1;;;;;10411:7:3;10401:9;:18::i;:::-;10205:221;;;;;:::o;1314:44::-;;;-1:-1:-1;;;;;1314:44:3;;:::o;13656:835::-;13864:21;13895:15;13935:67;13967:5;13974:4;13988;13995:6;13935:31;:67::i;:::-;14025:47;;;;;14075:6;;-1:-1:-1;;;;;14025:23:3;;;;;:47;;14057:4;;14064:7;;14025:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;14021:136;;;14097:49;;;;;-1:-1:-1;;;;;14097:21:3;;;;;:49;;14119:7;;-1:-1:-1;;14128:17:3;14097:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14021:136;14214:44;;;;;14175:7;;-1:-1:-1;;;;;14214:29:3;;;;;:44;;14244:5;;14251:6;;14214:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14192:66;;;;;;;;14285:7;-1:-1:-1;;;;;14269:41:3;;14332:4;14351:8;14373:2;14434:5;-1:-1:-1;;;;;14423:26:3;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14418:33;;:2;:33;:::i;:::-;14411:41;;:2;:41;:::i;:::-;14402:50;;:6;:50;:::i;:::-;14389:63;;;14466:7;;14269:214;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13656:835;;;;;;;;;;;:::o;11759:242::-;11968:7;;11885:24;;11932:62;;-1:-1:-1;;;;;11968:7:3;11978:9;11989:4;11932:27;:62::i;:::-;11925:69;;11759:242;;;;;:::o;2310:127::-;2394:11:::1;:36:::0;;;::::1;-1:-1:-1::0;;;;;2394:36:3;;;::::1;::::0;;;::::1;::::0;;2310:127::o;1141:31::-;;;-1:-1:-1;;;;;1141:31:3;;:::o;9239:259::-;9483:7;;9437:24;;9473:18;;-1:-1:-1;;;;;9483:7:3;9473:9;:18::i;:::-;9239:259;;;;;;;:::o;8282:261::-;8519:16;;8509:27;;-1:-1:-1;;;;;8519:16:3;8509:9;:27::i;:::-;8282:261;;;;;;:::o;12125:591::-;12234:18;;;-1:-1:-1;;;;;12335:19:3;;12331:379;;-1:-1:-1;12386:1:3;;-1:-1:-1;12386:1:3;;-1:-1:-1;12386:1:3;12370:29;;12331:379;12465:5;-1:-1:-1;;;;;12434:51:3;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12434:53:3;;;;;;;;-1:-1:-1;;12434:53:3;;;;;;;;;;;;:::i;:::-;;;12430:270;;-1:-1:-1;12672:1:3;;-1:-1:-1;12672:1:3;;-1:-1:-1;12672:1:3;12656:29;;12430:270;12546:13;12561:4;12598:5;-1:-1:-1;;;;;12567:46:3;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12538:78;;;;;;;12430:270;12125:591;;;;;:::o;1094:40::-;;;-1:-1:-1;;;;;1094:40:3;;:::o;1178:38::-;;;-1:-1:-1;;;;;1178:38:3;;:::o;2589:120::-;2665:7:::1;:37:::0;;;::::1;-1:-1:-1::0;;;;;2665:37:3;;;::::1;::::0;;;::::1;::::0;;2589:120::o;7950:322::-;8248:16;;8238:27;;-1:-1:-1;;;;;8248:16:3;8238:9;:27::i;:::-;7950:322;;;;;;;;;:::o;12827:696::-;12939:18;12971:11;12996:14;13024:16;13065:12;13119:16;13129:5;13119:9;:16::i;:::-;13087:48;;-1:-1:-1;13087:48:3;;-1:-1:-1;13087:48:3;-1:-1:-1;13087:48:3;13154:363;;13198:1;13202:5;13209:1;13212;13182:32;;;;;;;;;;;13154:363;13267:10;-1:-1:-1;;;;;13257:30:3;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13257:32:3;;;;;;;;-1:-1:-1;;13257:32:3;;;;;;;;;;;;:::i;:::-;;;13253:254;;13476:1;13480:5;13487:1;13490;13460:32;;;;;;;;;;;13253:254;13343:10;13355:4;13392:5;-1:-1:-1;;;;;13361:46:3;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13335:85;;-1:-1:-1;13335:85:3;-1:-1:-1;13335:85:3;-1:-1:-1;13411:8:3;-1:-1:-1;;12827:696:3;;;;;;:::o;3082:117::-;3165:16:::1;:27:::0;;;::::1;-1:-1:-1::0;;;;;3165:27:3;;;::::1;::::0;;;::::1;::::0;;3082:117::o;9769:203::-;9957:7;;9947:18;;-1:-1:-1;;;;;9957:7:3;9947:9;:18::i;:::-;9769:203;;;;:::o;11264:241::-;11403:16;11438:60;11465:9;11476;11487:10;11438:26;:60::i;5975:431::-;6384:14;;6274:15;;;;;;6374:25;;-1:-1:-1;;;;;6384:14:3;6374:9;:25::i;:::-;5975:431;;;;;;;;;;;:::o;2862:99::-;2936:7:::1;:18:::0;;;::::1;-1:-1:-1::0;;;;;2936:18:3;;;::::1;::::0;;;::::1;::::0;;2862:99::o;3205:126::-;3282:7:::1;::::0;;:42:::1;::::0;;;;-1:-1:-1;;;;;3282:7:3;;::::1;::::0;:25:::1;::::0;:42:::1;::::0;3308:15;;3282:42:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;2967:109:::0;3046:14:::1;:23:::0;;;::::1;-1:-1:-1::0;;;;;3046:23:3;;;::::1;::::0;;;::::1;::::0;;2967:109::o;10792:218::-;10920:15;10954:49;10975:7;10984:8;10994;10954:20;:49::i;3923:193::-;4057:52:::1;4085:5;4092:8;4102:6;4057:27;:52::i;:::-;3923:193:::0;;;:::o;3592:188::-;3689:7:::1;::::0;;:40:::1;::::0;;;;-1:-1:-1;;;;;3689:7:3;;::::1;::::0;:28:::1;::::0;:40:::1;::::0;3718:10;;3689:40:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3739:7:3::1;::::0;;:34:::1;::::0;;;;-1:-1:-1;;;;;3739:7:3;;::::1;::::0;-1:-1:-1;3739:25:3::1;::::0;-1:-1:-1;3739:34:3::1;::::0;3765:7;;3739:34:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;6412:395:::0;6785:14;;6669:19;;;;;;6775:25;;-1:-1:-1;;;;;6785:14:3;6775:9;:25::i;:::-;6412:395;;;;;;;;;:::o;5494:217::-;5678:6;5696:8;;;1404:42;;;;:::o;1269:39::-;;;-1:-1:-1;;;;;1269:39:3;;:::o;1222:40::-;;;-1:-1:-1;;;;;1222:40:3;;:::o;2171:133::-;2255:11:::1;:42:::0;;;::::1;-1:-1:-1::0;;;;;2255:42:3;;;::::1;::::0;;;::::1;::::0;;2171:133::o;11511:242::-;11721:7;;11637:24;;11684:62;;-1:-1:-1;;;;;11721:7:3;11731:8;11741:4;11684:28;:62::i;2443:140::-;2529:12:::1;:47:::0;;;::::1;-1:-1:-1::0;;;;;2529:47:3;;;::::1;::::0;;;::::1;::::0;;2443:140::o;7366:230::-;7572:16;;7562:27;;-1:-1:-1;;;;;7572:16:3;7562:9;:27::i;4879:609::-;5039:6;;5081:37;;;;5092:7;5081:37;:::i;:::-;5057:61;;;5132:9;5145:1;5132:14;5128:305;;;5203:14;;5193:25;;-1:-1:-1;;;;;5203:14:3;5193:9;:25::i;:::-;5128:305;;;5239:9;5252:1;5239:14;:32;;;;5257:9;5270:1;5257:14;5239:32;:50;;;;5275:9;5288:1;5275:14;5239:50;:68;;;;5293:9;5306:1;5293:14;5239:68;5235:198;;;5364:7;;5354:18;;-1:-1:-1;;;;;5364:7:3;5354:9;:18::i;5235:198::-;-1:-1:-1;5450:31:3;;4879:609;-1:-1:-1;;;;;;;4879:609:3:o;3786:99::-;3855:7:::1;::::0;;:23:::1;::::0;;;;-1:-1:-1;;;;;3855:7:3;;::::1;::::0;:16:::1;::::0;:23:::1;::::0;3872:5;;3855:23:::1;;:::i;1364:34::-:0;;;-1:-1:-1;;;;;1364:34:3;;:::o;2540:557:32:-;2672:17;2720:1;2709:8;:12;2701:66;;;;-1:-1:-1;;;2701:66:32;;;;;;;:::i;:::-;2797:1;2785:9;:13;:31;;;;;2815:1;2802:10;:14;2785:31;2777:82;;;;-1:-1:-1;;;2777:82:32;;;;;;;:::i;:::-;2869:23;2895:17;:8;2908:3;2895:12;:17::i;:::-;2869:43;-1:-1:-1;2922:17:32;2942:31;2869:43;2962:10;2942:19;:31::i;:::-;2922:51;-1:-1:-1;2983:19:32;3005:40;3029:15;3005:19;:9;3019:4;3005:13;:19::i;:::-;:23;;:40::i;:::-;2983:62;-1:-1:-1;3067:23:32;2983:62;3067:9;:23;:::i;:::-;3055:35;2540:557;-1:-1:-1;;;;;;;2540:557:32:o;534:490:3:-;646:14;643:1;640;627:34;746:1;743;727:14;724:1;708:14;701:5;688:60;782:16;779:1;776;761:38;819:6;842:74;;;;973:16;970:1;963:27;842:74;881:16;878:1;871:27;764:708:32;883:12;908:14;924;942:26;953:6;961;942:10;:26::i;:::-;907:61;;;;1178:7;1242:6;1250;1225:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1215:43;;;;;;1095:306;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1095:306:32;;;;;;;;;1060:363;;1095:306;1060:363;;;;;764:708;-1:-1:-1;;;;;;764:708:32:o;1001:439:36:-;1219:12;1233:17;1254:5;-1:-1:-1;;;;;1254:10:36;1288;1300:4;1306:2;1310:5;1265:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1254:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:99;;;;1335:7;:57;;;;-1:-1:-1;1347:11:36;;:16;;:44;;;1378:4;1367:24;;;;;;;;;;;;:::i;:::-;1327:106;;;;-1:-1:-1;;;1327:106:36;;;;;;;:::i;4431:570:32:-;4565:24;4624:1;4609:4;:11;:16;;4601:57;;;;-1:-1:-1;;;4601:57:32;;;;;;;:::i;:::-;4692:4;:11;4678:26;;;;;;-1:-1:-1;;;4678:26:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4678:26:32;;4668:36;;4744:9;4714:7;4739:1;4722:7;:14;:18;;;;:::i;:::-;4714:27;;;;;;-1:-1:-1;;;4714:27:32;;;;;;;;;;;;;;:39;;;;;4768:9;4794:1;4780:4;:11;:15;;;;:::i;:::-;4768:27;;4763:232;4797:5;;4763:232;;4824:17;;4865:42;4877:7;4886:4;4891:5;4895:1;4891;:5;:::i;:::-;4886:11;;;;;;-1:-1:-1;;;4886:11:32;;;;;;;;;;;;;;;4899:4;4904:1;4899:7;;;;;;-1:-1:-1;;;4899:7:32;;;;;;;;;;;;;;;4865:11;:42::i;:::-;4823:84;;;;4938:46;4950:7;4958:1;4950:10;;;;;;-1:-1:-1;;;4950:10:32;;;;;;;;;;;;;;;4962:9;4973:10;4938:11;:46::i;:::-;4921:7;4929:5;4933:1;4929;:5;:::i;:::-;4921:14;;;;;;-1:-1:-1;;;4921:14:32;;;;;;;;;;;;;;:63;;;;;4763:232;;4804:3;;;;;:::i;:::-;;;;4763:232;;;;4431:570;;;;;:::o;3215:510::-;3347:16;3395:1;3383:9;:13;3375:68;;;;-1:-1:-1;;;3375:68:32;;;;;;;:::i;:::-;3473:1;3461:9;:13;:31;;;;;3491:1;3478:10;:14;3461:31;3453:82;;;;-1:-1:-1;;;3453:82:32;;;;;;;:::i;:::-;3545:17;3565:34;3594:4;3565:24;:9;3579;3565:13;:24::i;:::-;:28;;:34::i;:::-;3545:54;-1:-1:-1;3609:19:32;3631:34;3661:3;3631:25;:10;3646:9;3631:14;:25::i;:34::-;3609:56;-1:-1:-1;3686:32:32;3716:1;3687:23;3609:56;3687:9;:23;:::i;3686:32::-;3675:43;3215:510;-1:-1:-1;;;;;;3215:510:32:o;2066:355::-;2187:15;2232:1;2222:7;:11;2214:59;;;;-1:-1:-1;;;2214:59:32;;;;;;;:::i;:::-;2302:1;2291:8;:12;:28;;;;;2318:1;2307:8;:12;2291:28;2283:79;;;;-1:-1:-1;;;2283:79:32;;;;;;;:::i;:::-;2406:8;2382:21;:7;2394:8;2382:11;:21::i;:::-;:32;;;;:::i;605:390:36:-;785:12;799:17;820:5;-1:-1:-1;;;;;820:10:36;854;866:2;870:5;831:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:93;;;;895:7;:57;;;;-1:-1:-1;907:11:36;;:16;;:44;;;938:4;927:24;;;;;;;;;;;;:::i;:::-;887:101;;;;-1:-1:-1;;;887:101:36;;;;;;;:::i;3804:549:32:-;3938:24;3997:1;3982:4;:11;:16;;3974:57;;;;-1:-1:-1;;;3974:57:32;;;;;;;:::i;:::-;4065:4;:11;4051:26;;;;;;-1:-1:-1;;;4051:26:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4051:26:32;;4041:36;;4100:8;4087:7;4095:1;4087:10;;;;;;-1:-1:-1;;;4087:10:32;;;;;;;;;;;;;;:21;;;;;4123:9;4118:229;4152:1;4138:4;:11;:15;;;;:::i;:::-;4134:1;:19;4118:229;;;4175:17;4194:18;4216:42;4228:7;4237:4;4242:1;4237:7;;;;;;-1:-1:-1;;;4237:7:32;;;;;;;;;;;;;;;4246:4;4251:1;4255;4251:5;;;;:::i;:::-;4246:11;;;;;;-1:-1:-1;;;4246:11:32;;;;;;;;4216:42;4174:84;;;;4289:47;4302:7;4310:1;4302:10;;;;;;-1:-1:-1;;;4302:10:32;;;;;;;;;;;;;;;4314:9;4325:10;4289:12;:47::i;:::-;4272:7;4280:5;:1;4284;4280:5;:::i;:::-;4272:14;;;;;;-1:-1:-1;;;4272:14:32;;;;;;;;;;;;;;:64;;;;;4118:229;;4155:3;;;;;:::i;:::-;;;;4118:229;;458:140:35;510:6;536;;;:30;;-1:-1:-1;565:1:35;560;551:5;560:1;565;551:5;:::i;:::-;547:9;-1:-1:-1;546:15:35;;547:9;546:15;:::i;:::-;:20;536:30;528:63;;;;-1:-1:-1;;;528:63:35;;;;;;;:::i;193:126::-;245:6;286:1;276:5;280:1;286;276:5;:::i;:::-;272:9;;;271:16;;263:49;;;;-1:-1:-1;;;263:49:35;;;;;;;:::i;334:341:32:-;409:14;425;469:6;-1:-1:-1;;;;;459:16:32;:6;-1:-1:-1;;;;;459:16:32;;;451:64;;;;-1:-1:-1;;;451:64:32;;;;;;;:::i;:::-;553:6;-1:-1:-1;;;;;544:15:32;:6;-1:-1:-1;;;;;544:15:32;;:53;;582:6;590;544:53;;;563:6;571;544:53;525:72;;-1:-1:-1;525:72:32;-1:-1:-1;;;;;;615:20:32;;607:61;;;;-1:-1:-1;;;607:61:32;;;;;;;:::i;:::-;334:341;;;;;:::o;1527:429::-;1650:16;1668;1697:14;1717:26;1728:6;1736;1717:10;:26::i;:::-;1696:47;;;1754:16;1772;1807:32;1815:7;1824:6;1832;1807:7;:32::i;:::-;-1:-1:-1;;;;;1794:58:32;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1753:101;;;;;;;;;1897:6;-1:-1:-1;;;;;1887:16:32;:6;-1:-1:-1;;;;;1887:16:32;;:62;;1930:8;1940;1887:62;;;1907:8;1917;1887:62;1864:85;;;;-1:-1:-1;1527:429:32;-1:-1:-1;;;;;;;1527:429:32:o;325:127:35:-;377:6;418:1;408:5;412:1;418;408:5;:::i;:::-;404:9;;;403:16;;395:50;;;;-1:-1:-1;;;395:50:35;;;;;;;:::i;14:826:38:-;;127:3;120:4;112:6;108:17;104:27;94:2;;149:5;142;135:20;94:2;189:6;176:20;215:4;238:18;234:2;231:26;228:2;;;260:18;;:::i;:::-;307:2;303;299:11;330:27;353:2;349;345:11;330:27;:::i;:::-;391:15;;;422:12;;;;454:15;;;488;;;484:24;;481:33;-1:-1:-1;478:2:38;;;531:5;524;517:20;478:2;557:5;548:14;;571:240;585:2;582:1;579:9;571:240;;;656:3;643:17;673:33;700:5;673:33;:::i;:::-;719:18;;603:1;596:9;;;;;757:12;;;;789;;571:240;;;-1:-1:-1;829:5:38;84:756;-1:-1:-1;;;;;;;84:756:38:o;845:404::-;;;978:3;971:4;963:6;959:17;955:27;945:2;;1003:8;993;986:26;945:2;-1:-1:-1;1033:20:38;;1076:18;1065:30;;1062:2;;;1115:8;1105;1098:26;1062:2;1159:4;1151:6;1147:17;1135:29;;1222:3;1215:4;1207;1199:6;1195:17;1187:6;1183:30;1179:41;1176:50;1173:2;;;1239:1;1236;1229:12;1254:377;;;1371:3;1364:4;1356:6;1352:17;1348:27;1338:2;;1396:8;1386;1379:26;1338:2;-1:-1:-1;1426:20:38;;1469:18;1458:30;;1455:2;;;1508:8;1498;1491:26;1455:2;1552:4;1544:6;1540:17;1528:29;;1604:3;1597:4;1588:6;1580;1576:19;1572:30;1569:39;1566:2;;;1621:1;1618;1611:12;1636:190;1717:13;;1770:30;1759:42;;1749:53;;1739:2;;1816:1;1813;1806:12;1739:2;1698:128;;;:::o;1831:158::-;1899:20;;1959:4;1948:16;;1938:27;;1928:2;;1979:1;1976;1969:12;1994:259;;2106:2;2094:9;2085:7;2081:23;2077:32;2074:2;;;2127:6;2119;2112:22;2074:2;2171:9;2158:23;2190:33;2217:5;2190:33;:::i;2258:263::-;;2381:2;2369:9;2360:7;2356:23;2352:32;2349:2;;;2402:6;2394;2387:22;2349:2;2439:9;2433:16;2458:33;2485:5;2458:33;:::i;2526:1396::-;;;;;;;;;2795:3;2783:9;2774:7;2770:23;2766:33;2763:2;;;2817:6;2809;2802:22;2763:2;2861:9;2848:23;2880:33;2907:5;2880:33;:::i;:::-;2932:5;-1:-1:-1;2989:2:38;2974:18;;2961:32;3002:35;2961:32;3002:35;:::i;:::-;3056:7;-1:-1:-1;3114:2:38;3099:18;;3086:32;3137:18;3167:14;;;3164:2;;;3199:6;3191;3184:22;3164:2;3243:76;3311:7;3302:6;3291:9;3287:22;3243:76;:::i;:::-;3338:8;;-1:-1:-1;3217:102:38;-1:-1:-1;3426:2:38;3411:18;;3398:32;;-1:-1:-1;3442:16:38;;;3439:2;;;3476:6;3468;3461:22;3439:2;3520:78;3590:7;3579:8;3568:9;3564:24;3520:78;:::i;:::-;3617:8;;-1:-1:-1;3494:104:38;-1:-1:-1;3705:3:38;3690:19;;3677:33;;-1:-1:-1;3722:16:38;;;3719:2;;;3756:6;3748;3741:22;3719:2;;3800:62;3854:7;3843:8;3832:9;3828:24;3800:62;:::i;:::-;2753:1169;;;;-1:-1:-1;2753:1169:38;;-1:-1:-1;2753:1169:38;;;;;;3881:8;-1:-1:-1;;;2753:1169:38:o;3927:849::-;;;;;;;4126:3;4114:9;4105:7;4101:23;4097:33;4094:2;;;4148:6;4140;4133:22;4094:2;4192:9;4179:23;4211:33;4238:5;4211:33;:::i;:::-;4263:5;-1:-1:-1;4320:2:38;4305:18;;4292:32;4333:35;4292:32;4333:35;:::i;:::-;4387:7;-1:-1:-1;4441:2:38;4426:18;;4413:32;;-1:-1:-1;4492:2:38;4477:18;;4464:32;;-1:-1:-1;4547:3:38;4532:19;;4519:33;4575:18;4564:30;;4561:2;;;4612:6;4604;4597:22;4561:2;4656:60;4708:7;4699:6;4688:9;4684:22;4656:60;:::i;:::-;4084:692;;;;-1:-1:-1;4084:692:38;;-1:-1:-1;4084:692:38;;4735:8;;4084:692;-1:-1:-1;;;4084:692:38:o;4781:470::-;;;;4927:2;4915:9;4906:7;4902:23;4898:32;4895:2;;;4948:6;4940;4933:22;4895:2;4992:9;4979:23;5011:33;5038:5;5011:33;:::i;:::-;5063:5;-1:-1:-1;5115:2:38;5100:18;;5087:32;;-1:-1:-1;5171:2:38;5156:18;;5143:32;5184:35;5143:32;5184:35;:::i;:::-;5238:7;5228:17;;;4885:366;;;;;:::o;5256:1068::-;;;;;;;;5472:3;5460:9;5451:7;5447:23;5443:33;5440:2;;;5494:6;5486;5479:22;5440:2;5538:9;5525:23;5557:33;5584:5;5557:33;:::i;:::-;5609:5;-1:-1:-1;5661:2:38;5646:18;;5633:32;;-1:-1:-1;5717:2:38;5702:18;;5689:32;5730:35;5689:32;5730:35;:::i;:::-;5784:7;-1:-1:-1;5843:2:38;5828:18;;5815:32;5856:35;5815:32;5856:35;:::i;:::-;5910:7;-1:-1:-1;5969:3:38;5954:19;;5941:33;5983:35;5941:33;5983:35;:::i;:::-;6037:7;-1:-1:-1;6095:3:38;6080:19;;6067:33;6123:18;6112:30;;6109:2;;;6160:6;6152;6145:22;6109:2;6204:60;6256:7;6247:6;6236:9;6232:22;6204:60;:::i;:::-;5430:894;;;;-1:-1:-1;5430:894:38;;-1:-1:-1;5430:894:38;;;;6178:86;;-1:-1:-1;;;5430:894:38:o;6329:395::-;;;;6475:2;6463:9;6454:7;6450:23;6446:32;6443:2;;;6496:6;6488;6481:22;6443:2;6540:9;6527:23;6559:33;6586:5;6559:33;:::i;:::-;6611:5;6663:2;6648:18;;6635:32;;-1:-1:-1;6714:2:38;6699:18;;;6686:32;;6433:291;-1:-1:-1;;;6433:291:38:o;6729:677::-;;;;;;;6926:3;6914:9;6905:7;6901:23;6897:33;6894:2;;;6948:6;6940;6933:22;6894:2;6992:9;6979:23;7011:33;7038:5;7011:33;:::i;:::-;7063:5;-1:-1:-1;7115:2:38;7100:18;;7087:32;;-1:-1:-1;7166:2:38;7151:18;;7138:32;;-1:-1:-1;7217:2:38;7202:18;;7189:32;;-1:-1:-1;7273:3:38;7258:19;;7245:33;7287:35;7245:33;7287:35;:::i;:::-;7341:7;7331:17;;;7395:3;7384:9;7380:19;7367:33;7357:43;;6884:522;;;;;;;;:::o;7411:1026::-;;;;;;;;;;;7671:3;7659:9;7650:7;7646:23;7642:33;7639:2;;;7693:6;7685;7678:22;7639:2;7737:9;7724:23;7756:33;7783:5;7756:33;:::i;:::-;7808:5;-1:-1:-1;7860:2:38;7845:18;;7832:32;;-1:-1:-1;7911:2:38;7896:18;;7883:32;;-1:-1:-1;7962:2:38;7947:18;;7934:32;;-1:-1:-1;8018:3:38;8003:19;;7990:33;8032:35;7990:33;8032:35;:::i;:::-;8086:7;-1:-1:-1;8140:3:38;8125:19;;8112:33;;-1:-1:-1;8197:3:38;8182:19;;8169:33;8211:32;8169:33;8211:32;:::i;:::-;8262:7;-1:-1:-1;8288:39:38;8322:3;8307:19;;8288:39;:::i;:::-;8278:49;;8374:3;8363:9;8359:19;8346:33;8336:43;;8426:3;8415:9;8411:19;8398:33;8388:43;;7629:808;;;;;;;;;;;;;:::o;8442:746::-;;;;;;;;8656:3;8644:9;8635:7;8631:23;8627:33;8624:2;;;8678:6;8670;8663:22;8624:2;8722:9;8709:23;8741:33;8768:5;8741:33;:::i;:::-;8793:5;-1:-1:-1;8845:2:38;8830:18;;8817:32;;-1:-1:-1;8896:2:38;8881:18;;8868:32;;-1:-1:-1;8947:2:38;8932:18;;8919:32;;-1:-1:-1;8998:3:38;8983:19;;8970:33;;-1:-1:-1;9055:3:38;9040:19;;9027:33;9069:35;9027:33;9069:35;:::i;:::-;9123:7;9113:17;;;9177:3;9166:9;9162:19;9149:33;9139:43;;8614:574;;;;;;;;;;:::o;9193:257::-;;9313:2;9301:9;9292:7;9288:23;9284:32;9281:2;;;9334:6;9326;9319:22;9281:2;9371:9;9365:16;9390:30;9414:5;9390:30;:::i;9455:474::-;;;;9611:2;9599:9;9590:7;9586:23;9582:32;9579:2;;;9632:6;9624;9617:22;9579:2;9660:42;9692:9;9660:42;:::i;:::-;9650:52;;9721:51;9768:2;9757:9;9753:18;9721:51;:::i;:::-;9711:61;;9815:2;9804:9;9800:18;9794:25;9859:10;9852:5;9848:22;9841:5;9838:33;9828:2;;9890:6;9882;9875:22;9934:190;;10046:2;10034:9;10025:7;10021:23;10017:32;10014:2;;;10067:6;10059;10052:22;10014:2;-1:-1:-1;10095:23:38;;10004:120;-1:-1:-1;10004:120:38:o;10129:194::-;;10252:2;10240:9;10231:7;10227:23;10223:32;10220:2;;;10273:6;10265;10258:22;10220:2;-1:-1:-1;10301:16:38;;10210:113;-1:-1:-1;10210:113:38:o;10328:324::-;;;10468:2;10456:9;10447:7;10443:23;10439:32;10436:2;;;10489:6;10481;10474:22;10436:2;10523:9;10517:16;10507:26;;10576:2;10565:9;10561:18;10555:25;10589:33;10616:5;10589:33;:::i;:::-;10641:5;10631:15;;;10426:226;;;;;:::o;10657:442::-;;;10811:2;10799:9;10790:7;10786:23;10782:32;10779:2;;;10832:6;10824;10817:22;10779:2;10873:9;10860:23;10850:33;;10934:2;10923:9;10919:18;10906:32;10961:18;10953:6;10950:30;10947:2;;;10998:6;10990;10983:22;10947:2;11026:67;11085:7;11076:6;11065:9;11061:22;11026:67;:::i;:::-;11016:77;;;10769:330;;;;;:::o;11104:648::-;;;;;11292:3;11280:9;11271:7;11267:23;11263:33;11260:2;;;11314:6;11306;11299:22;11260:2;11355:9;11342:23;11332:33;;11416:2;11405:9;11401:18;11388:32;11443:18;11435:6;11432:30;11429:2;;;11480:6;11472;11465:22;11429:2;11508:67;11567:7;11558:6;11547:9;11543:22;11508:67;:::i;:::-;11498:77;;;11625:2;11614:9;11610:18;11597:32;11638:33;11665:5;11638:33;:::i;:::-;11250:502;;;;-1:-1:-1;11690:5:38;;11742:2;11727:18;11714:32;;-1:-1:-1;;11250:502:38:o;11757:934::-;;;11895:2;11883:9;11874:7;11870:23;11866:32;11863:2;;;11916:6;11908;11901:22;11863:2;11957:9;11944:23;11934:33;;11986:2;12039;12028:9;12024:18;12011:32;12062:18;12103:2;12095:6;12092:14;12089:2;;;12124:6;12116;12109:22;12089:2;12167:6;12156:9;12152:22;12142:32;;12212:7;12205:4;12201:2;12197:13;12193:27;12183:2;;12239:6;12231;12224:22;12183:2;12280;12267:16;12302:2;12298;12295:10;12292:2;;;12308:18;;:::i;:::-;12350:111;12457:2;-1:-1:-1;;12381:4:38;12377:2;12373:13;12369:86;12365:95;12350:111;:::i;:::-;12337:124;;12484:2;12477:5;12470:17;12524:7;12519:2;12514;12510;12506:11;12502:20;12499:33;12496:2;;;12550:6;12542;12535:22;12496:2;12610;12605;12601;12597:11;12592:2;12585:5;12581:14;12568:45;12633:14;;12629:23;;;12622:39;;;;11853:838;;12637:5;;-1:-1:-1;11853:838:38;;-1:-1:-1;;11853:838:38:o;12696:258::-;;;12825:2;12813:9;12804:7;12800:23;12796:32;12793:2;;;12846:6;12838;12831:22;12793:2;-1:-1:-1;;12874:23:38;;;12944:2;12929:18;;;12916:32;;-1:-1:-1;12783:171:38:o;12959:717::-;;;;;;13164:3;13152:9;13143:7;13139:23;13135:33;13132:2;;;13186:6;13178;13171:22;13132:2;13227:9;13214:23;13204:33;;13284:2;13273:9;13269:18;13256:32;13246:42;;13339:2;13328:9;13324:18;13311:32;13366:18;13358:6;13355:30;13352:2;;;13403:6;13395;13388:22;13352:2;13431:67;13490:7;13481:6;13470:9;13466:22;13431:67;:::i;:::-;13421:77;;;13548:2;13537:9;13533:18;13520:32;13561:33;13588:5;13561:33;:::i;:::-;13122:554;;;;-1:-1:-1;13122:554:38;;13665:3;13650:19;13637:33;;13122:554;-1:-1:-1;;13122:554:38:o;13681:326::-;;;;13827:2;13815:9;13806:7;13802:23;13798:32;13795:2;;;13848:6;13840;13833:22;13795:2;-1:-1:-1;;13876:23:38;;;13946:2;13931:18;;13918:32;;-1:-1:-1;13997:2:38;13982:18;;;13969:32;;13785:222;-1:-1:-1;13785:222:38:o;14012:533::-;;;;;;14192:3;14180:9;14171:7;14167:23;14163:33;14160:2;;;14214:6;14206;14199:22;14160:2;14255:9;14242:23;14232:33;;14312:2;14301:9;14297:18;14284:32;14274:42;;14363:2;14352:9;14348:18;14335:32;14325:42;;14417:2;14406:9;14402:18;14389:32;14430:33;14457:5;14430:33;:::i;14550:882::-;;;;;;;;;;14793:3;14781:9;14772:7;14768:23;14764:33;14761:2;;;14815:6;14807;14800:22;14761:2;14856:9;14843:23;14833:33;;14913:2;14902:9;14898:18;14885:32;14875:42;;14964:2;14953:9;14949:18;14936:32;14926:42;;15018:2;15007:9;15003:18;14990:32;15031:33;15058:5;15031:33;:::i;:::-;15083:5;-1:-1:-1;15135:3:38;15120:19;;15107:33;;-1:-1:-1;15192:3:38;15177:19;;15164:33;15206:32;15164:33;15206:32;:::i;:::-;15257:7;-1:-1:-1;15283:39:38;15317:3;15302:19;;15283:39;:::i;:::-;15273:49;;15369:3;15358:9;15354:19;15341:33;15331:43;;15421:3;15410:9;15406:19;15393:33;15383:43;;14751:681;;;;;;;;;;;:::o;15437:368::-;15604:66;15699:2;15695:15;;;15691:24;;15679:37;;15750:15;;;;15746:24;15741:2;15732:12;;15725:46;15796:2;15787:12;;15584:221::o;15810:430::-;;15977:6;15971:13;16002:3;16014:129;16028:6;16025:1;16022:13;16014:129;;;16126:4;16110:14;;;16106:25;;16100:32;16087:11;;;16080:53;16043:12;16014:129;;;16161:6;16158:1;16155:13;16152:2;;;16196:3;16187:6;16182:3;16178:16;16171:29;16152:2;-1:-1:-1;16218:16:38;;;;;15947:293;-1:-1:-1;;15947:293:38:o;16245:724::-;16616:66;16604:79;;16720:2;16716:15;;;;16733:66;16712:88;16708:1;16699:11;;16692:109;16826:2;16817:12;;16810:28;16868:66;16863:2;16854:12;;16847:88;16960:2;16951:12;;16594:375::o;16974:226::-;-1:-1:-1;;;;;17138:55:38;;;;17120:74;;17108:2;17093:18;;17075:125::o;17205:327::-;-1:-1:-1;;;;;17458:15:38;;;17440:34;;17510:15;;17505:2;17490:18;;17483:43;17367:2;17352:18;;17334:198::o;17537:398::-;-1:-1:-1;;;;;17818:15:38;;;17800:34;;17870:15;;;;17865:2;17850:18;;17843:43;17917:2;17902:18;;17895:34;;;;17727:2;17712:18;;17694:241::o;17940:819::-;;-1:-1:-1;;;;;18282:2:38;18274:6;18270:15;18259:9;18252:34;18334:2;18326:6;18322:15;18317:2;18306:9;18302:18;18295:43;;18374:6;18369:2;18358:9;18354:18;18347:34;18417:6;18412:2;18401:9;18397:18;18390:34;18461:3;18455;18444:9;18440:19;18433:32;18502:6;18496:3;18485:9;18481:19;18474:35;18560:6;18552;18546:3;18535:9;18531:19;18518:49;18587:22;;;18611:3;18583:32;;;18576:46;;;;18674:2;18662:15;;;-1:-1:-1;;18658:88:38;18643:104;18639:114;;18181:578;-1:-1:-1;;;;;18181:578:38:o;18764:378::-;-1:-1:-1;;;;;18978:55:38;;;;18960:74;;19077:14;;19070:22;19065:2;19050:18;;19043:50;19124:2;19109:18;;19102:34;18948:2;18933:18;;18915:227::o;19147:450::-;-1:-1:-1;;;;;19390:55:38;;;;19372:74;;19489:14;;19482:22;19477:2;19462:18;;19455:50;19536:2;19521:18;;19514:34;19579:2;19564:18;;19557:34;19359:3;19344:19;;19326:271::o;19602:297::-;-1:-1:-1;;;;;19794:55:38;;;;19776:74;;19881:2;19866:18;;19859:34;19764:2;19749:18;;19731:168::o;19904:368::-;-1:-1:-1;;;;;20124:55:38;;;;20106:74;;20211:2;20196:18;;20189:34;;;;20254:2;20239:18;;20232:34;20094:2;20079:18;;20061:211::o;20277:635::-;20448:2;20500:21;;;20570:13;;20473:18;;;20592:22;;;20277:635;;20448:2;20671:15;;;;20645:2;20630:18;;;20277:635;20717:169;20731:6;20728:1;20725:13;20717:169;;;20792:13;;20780:26;;20861:15;;;;20826:12;;;;20753:1;20746:9;20717:169;;;-1:-1:-1;20903:3:38;;20428:484;-1:-1:-1;;;;;;20428:484:38:o;20917:248::-;21091:66;21079:79;;;;21061:98;;21049:2;21034:18;;21016:149::o;22178:345::-;22380:2;22362:21;;;22419:2;22399:18;;;22392:30;22458:23;22453:2;22438:18;;22431:51;22514:2;22499:18;;22352:171::o;22528:355::-;22730:2;22712:21;;;22769:2;22749:18;;;22742:30;22808:33;22803:2;22788:18;;22781:61;22874:2;22859:18;;22702:181::o;22888:344::-;23090:2;23072:21;;;23129:2;23109:18;;;23102:30;23168:22;23163:2;23148:18;;23141:50;23223:2;23208:18;;23062:170::o;23237:344::-;23439:2;23421:21;;;23478:2;23458:18;;;23451:30;23517:22;23512:2;23497:18;;23490:50;23572:2;23557:18;;23411:170::o;23586:399::-;23788:2;23770:21;;;23827:2;23807:18;;;23800:30;23866:34;23861:2;23846:18;;23839:62;23937:5;23932:2;23917:18;;23910:33;23975:3;23960:19;;23760:225::o;23990:406::-;24192:2;24174:21;;;24231:2;24211:18;;;24204:30;24270:34;24265:2;24250:18;;24243:62;24341:12;24336:2;24321:18;;24314:40;24386:3;24371:19;;24164:232::o;24401:352::-;24603:2;24585:21;;;24642:2;24622:18;;;24615:30;24681;24676:2;24661:18;;24654:58;24744:2;24729:18;;24575:178::o;24758:405::-;24960:2;24942:21;;;24999:2;24979:18;;;24972:30;25038:34;25033:2;25018:18;;25011:62;25109:11;25104:2;25089:18;;25082:39;25153:3;25138:19;;24932:231::o;25168:399::-;25370:2;25352:21;;;25409:2;25389:18;;;25382:30;25448:34;25443:2;25428:18;;25421:62;25519:5;25514:2;25499:18;;25492:33;25557:3;25542:19;;25342:225::o;25572:406::-;25774:2;25756:21;;;25813:2;25793:18;;;25786:30;25852:34;25847:2;25832:18;;25825:62;25923:12;25918:2;25903:18;;25896:40;25968:3;25953:19;;25746:232::o;25983:402::-;26185:2;26167:21;;;26224:2;26204:18;;;26197:30;26263:34;26258:2;26243:18;;26236:62;26334:8;26329:2;26314:18;;26307:36;26375:3;26360:19;;26157:228::o;26390:400::-;26592:2;26574:21;;;26631:2;26611:18;;;26604:30;26670:34;26665:2;26650:18;;26643:62;26741:6;26736:2;26721:18;;26714:34;26780:3;26765:19;;26564:226::o;26795:352::-;26997:2;26979:21;;;27036:2;27016:18;;;27009:30;27075;27070:2;27055:18;;27048:58;27138:2;27123:18;;26969:178::o;27152:177::-;27298:25;;;27286:2;27271:18;;27253:76::o;27334:319::-;27536:25;;;27592:2;27577:18;;27570:34;;;;27635:2;27620:18;;27613:34;27524:2;27509:18;;27491:162::o;27658:251::-;27728:2;27722:9;27758:17;;;27805:18;27790:34;;27826:22;;;27787:62;27784:2;;;27852:18;;:::i;:::-;27888:2;27881:22;27702:207;;-1:-1:-1;27702:207:38:o;27914:128::-;;27985:1;27981:6;27978:1;27975:13;27972:2;;;27991:18;;:::i;:::-;-1:-1:-1;28027:9:38;;27962:80::o;28047:274::-;;28113:1;28103:2;;-1:-1:-1;;;28145:1:38;28138:88;28249:4;28246:1;28239:15;28277:4;28274:1;28267:15;28103:2;-1:-1:-1;28306:9:38;;28093:228::o;28326:453::-;28422:6;28445:5;28459:314;28508:1;28545:2;28535:8;28532:16;28522:2;;28552:5;;;28522:2;28593:4;28588:3;28584:14;28578:4;28575:24;28572:2;;;28602:18;;:::i;:::-;28652:2;28642:8;28638:17;28635:2;;;28667:16;;;;28635:2;28746:17;;;;;28706:15;;28459:314;;;28403:376;;;;;;;:::o;28784:199::-;;28873:104;-1:-1:-1;;28900:8:38;28894:4;28988:922;29072:8;29062:2;;-1:-1:-1;29113:1:38;29127:5;;29062:2;29161:4;29151:2;;-1:-1:-1;29198:1:38;29212:5;;29151:2;29243:4;29261:1;29256:59;;;;29329:1;29324:183;;;;29236:271;;29256:59;29286:1;29277:10;;29300:5;;;29324:183;29361:3;29351:8;29348:17;29345:2;;;29368:18;;:::i;:::-;29424:1;29414:8;29410:16;29401:25;;29452:3;29445:5;29442:14;29439:2;;;29459:18;;:::i;:::-;29492:5;;;29236:271;;29591:2;29581:8;29578:16;29572:3;29566:4;29563:13;29559:36;29553:2;29543:8;29540:16;29535:2;29529:4;29526:12;29522:35;29519:77;29516:2;;;-1:-1:-1;29628:19:38;;;29663:14;;;29660:2;;;29680:18;;:::i;:::-;29713:5;;29516:2;29760:42;29798:3;29788:8;29782:4;29779:1;29760:42;:::i;:::-;29835:6;29830:3;29826:16;29817:7;29814:29;29811:2;;;29846:18;;:::i;:::-;29884:20;;29052:858;-1:-1:-1;;;;29052:858:38:o;29915:228::-;;30081:1;-1:-1:-1;;30009:74:38;30006:1;30003:81;29998:1;29991:9;29984:17;29980:105;29977:2;;;30088:18;;:::i;:::-;-1:-1:-1;30128:9:38;;29967:176::o;30148:125::-;;30216:1;30213;30210:8;30207:2;;;30221:18;;:::i;:::-;-1:-1:-1;30258:9:38;;30197:76::o;30278:196::-;;30345:5;30335:2;;30354:18;;:::i;:::-;-1:-1:-1;;;30390:78:38;;30325:149::o;30479:195::-;;-1:-1:-1;;30542:5:38;30539:77;30536:2;;;30619:18;;:::i;:::-;-1:-1:-1;30666:1:38;30655:13;;30526:148::o;30679:184::-;-1:-1:-1;;;30728:1:38;30721:88;30828:4;30825:1;30818:15;30852:4;30849:1;30842:15;30868:184;-1:-1:-1;;;30917:1:38;30910:88;31017:4;31014:1;31007:15;31041:4;31038:1;31031:15;31057:156;-1:-1:-1;;;;;31138:5:38;31134:54;31127:5;31124:65;31114:2;;31203:1;31200;31193:12;31114:2;31104:109;:::o;31218:120::-;31306:5;31299:13;31292:21;31285:5;31282:32;31272:2;;31328:1;31325;31318:12"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialBridgeToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialErc20Wrapper\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialDoubleProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialLiquidityAdder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialLiquidityRemover\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialSwapper\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ETHEREUM_OBJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bridgeAmountDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"EthAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"doubleProxy\",\"outputs\":[{\"internalType\":\"contract IDoubleProxy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20Wrapper\",\"outputs\":[{\"internalType\":\"contract IERC20WrapperV1\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract IMateriaFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"getCrumbs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isEthItem\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"collection\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ethItem\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"itemId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isNativeItem\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"collection\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"native\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"itemId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidityAdder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidityRemover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAndUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"EthAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermitAndUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOrchestrator\",\"type\":\"address\"}],\"name\":\"retire\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newBridgeToken\",\"type\":\"address\"}],\"name\":\"setBridgeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"materiaFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"setDefaultFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newDoubleProxy\",\"type\":\"address\"}],\"name\":\"setDoubleProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newErc20Wrapper\",\"type\":\"address\"}],\"name\":\"setErc20Wrapper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newEthereumObjectId\",\"type\":\"uint256\"}],\"name\":\"setEthereumObjectId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newFactory\",\"type\":\"address\"}],\"name\":\"setFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeTo\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"materiaFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"setFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_adder\",\"type\":\"address\"}],\"name\":\"setLiquidityAdder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_remover\",\"type\":\"address\"}],\"name\":\"setLiquidityRemover\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_swapper\",\"type\":\"address\"}],\"name\":\"setSwapper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"interoperable\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"itemAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidity(address,uint256,uint256,uint256,uint256,address,uint256)\":{\"notice\":\"Liquidity adding methods are exposed to call the Liquidity Adder contract via a secure channel such as the Orchestrator. Both addLiquidity and addLiquidityETH methods are provided. addLiquidity can be used for ERC20 and ITEMs.\"},\"isEthItem(address)\":{\"notice\":\"isEthItem is a custom implementation to check whether a token is an ITEM or a standard ERC20.\"},\"isNativeItem(address)\":{\"notice\":\"isNativeItem is a custom implementation to check whether an ITEM is native.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"notice\":\"As ERC1155 receiver Materia Orchestrator implements onERC1155Received and onERC1155BatchReceived. onERC1155Received exposes the delegate call to the Liquidity Adder, Remover Liquidity and to the Swapper contracts. Calling with a callback you will be able to specify the operation needed. onERC1155BatchReceived will be implemented with batch/lego operation.\"},\"quote(uint256,uint256,uint256)\":{\"notice\":\"Methods are exposed for the UI to retrive useful information such as quote, getAmountOut, getAmountIn, getAmountsOut, getAmountsIn\"},\"removeLiquidity(address,uint256,uint256,uint256,address,uint256)\":{\"notice\":\"Liquidity removing methods are exposed to call the Liquidity Remover contract via a secure channel such as the Orchestrator. The following methods are provided: removeLiquidity, removeLiquidityETH, removeLiquidityWithPermit and removeLiquidityETHWithPermit\"},\"swapExactTokensForTokens(uint256,uint256,address[],address,uint256)\":{\"notice\":\"Swapping methods are exposed to call the Swapper Operator contract via a secure channel such as the Orchestrator. The following methods are provided: swapExactTokensForTokens, swapTokensForExactTokens, swapExactETHForTokens, swapTokensForExactETH, swapExactTokensForETH and swapETHForExactTokens\"},\"wrap(address,uint256,address,address,address,bytes)\":{\"notice\":\"the EthItem ERC20 wrapping functionality is exposed here, to decrease the required approvals\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MateriaOrchestrator.sol\":\"MateriaOrchestrator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/MateriaOrchestrator.sol\":{\"keccak256\":\"0xf1544c63ad524034841861aef7dee15d93ff9642ce01f5505ae57e21e82f5f67\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://f9d68399b89f27e2ea12032200eb8411c260a6f35ffae697a2b9e1c2c261056e\",\"dweb:/ipfs/QmYozTrygsbLe1LoxAuxjf8Uy2yWZwmi4RmkvKrTKr787F\"]},\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IDoubleProxy.sol\":{\"keccak256\":\"0xb3775ff336d8ca9e0f7cb3b7e7c322d96c6360b53ec4a3ce45c6540d4f0126a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://6ec1948724904ecf9185f960548865d20a13969a840c926e9162e4bb354d18f6\",\"dweb:/ipfs/QmXbRyhfnW3E4Mij5y8v9JfHVB2vqxxwDgNfvHeu3wHiHJ\"]},\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IERC20WrapperV1.sol\":{\"keccak256\":\"0xb11ab8431790ecf02d6380277e277a1e44fcf1cbc81973301149e7080157ea4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b5dfc1840e8834ba39b1a634fdc2ba67d250adc4f8540f0ee33e16439ccb9cd\",\"dweb:/ipfs/QmTyF4vz44kcYuLuZAEW7tBxWuMiNZAojDKopi8oeudgk3\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]},\"contracts/interfaces/IEthItemMainInterface.sol\":{\"keccak256\":\"0x1bc85f4e88618a2d75910da856d5d43a87213463dae57054b44aa0e2220c43e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12240288d6503024c37ad756722f451ad3d819affd30b9d54ca0e06942c414b0\",\"dweb:/ipfs/QmU1hLcanobgXgEEXbbA56YPob23ghDXXqjK7gCCXbj3mT\"]},\"contracts/interfaces/IEthItemModelBase.sol\":{\"keccak256\":\"0x2ef4d851f1127e58dc496490f84ebe5690bff39c48a0ff43338d0087e3b114da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7db0efdf2c2c6c758fa12146e9aa31ebe1fc7b1eaa36d644ada5a7696b22c627\",\"dweb:/ipfs/QmXP62zz7qHJtQfxNRoxPsPiJxhXTKaKRfjCHGxetwgYyV\"]},\"contracts/interfaces/IMVDFunctionalitiesManager.sol\":{\"keccak256\":\"0x050d033b3f1926ad9e2c4f0fbe7f90f81329031bc20f74a3763f94807ebbe1c9\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://ff6127103e5d260211c12c4724885a0ef94af693ca66f153d790bd362bbcc75e\",\"dweb:/ipfs/QmPWzoX8mm18cbLGtuybLpEkUWd4cPD6yYtLnTdUeWKMXQ\"]},\"contracts/interfaces/IMVDProxy.sol\":{\"keccak256\":\"0x4ec6db71aadf5a452fb98805e8d8652ab24251146f3d99c4438948f2b2c7d08d\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://0f2f95f6c40623a9d90932d2c9ae3e931cabb2704447db8148f33beebc2c69d3\",\"dweb:/ipfs/QmfAXd4ZG8HKisCQPCu9Kx237fomRLUB7UBN43t3bFjoCY\"]},\"contracts/interfaces/IMateriaFactory.sol\":{\"keccak256\":\"0xbb23d0937dd4e8da3b15e4e461603554abc9945d40b713f5f8f6e612d7e36dae\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://1cc856dd3375c7c345c693edda94b27d5c03d666843989308d6e61ef786b3718\",\"dweb:/ipfs/QmZaq9Vec3gVXNFoaWX56B2DQPYjpiDahdEoqogskHiJAp\"]},\"contracts/interfaces/IMateriaOrchestrator.sol\":{\"keccak256\":\"0x178eea6d9abe7758adbf30d406c9e3b1e05028441e6bf2661f6ac9d7441b06fc\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://b96f2d38b59f06bbfdf7d13e5a375e8eb6e1de507f40be7e7cbe37b34526a0e6\",\"dweb:/ipfs/QmSgMmM6Uk2EpgwNZxZpJf3yHHPQZ6LvcBWAV9DuPSnrCm\"]},\"contracts/interfaces/IMateriaPair.sol\":{\"keccak256\":\"0x9bebb503cf622a7e7328ff812b8817e1d3b22e273d345083118e92522b810693\",\"urls\":[\"bzz-raw://a0b3308a2e9f28a85ec586372329792eaf32562c7293af0657ef03f8d04bc7f9\",\"dweb:/ipfs/QmegwdpH1wYAUtTwKu1yUiekj13CB251znNc4Kb2Jf5b2L\"]},\"contracts/interfaces/INativeV1.sol\":{\"keccak256\":\"0x923c01bc275842ef09bd388355d611e119f115b92c283beb11b88d783696bae5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://117e0b85dba46111c974aa4a9e6ddd46d9d75198e93b6e2c571604fb5b25f5cb\",\"dweb:/ipfs/QmaVw7wqeR8jWMW55VPp6F1cMcGhb4VLAG3fPpRwTHmn3D\"]},\"contracts/libraries/MateriaLibrary.sol\":{\"keccak256\":\"0x84b8cdd67ecab6d9bd442140670a16c4608fefdcaa702c25339a89b0527381c6\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://f2ce38a46f0ddc6b043ba9e91590f482553fc96c7bec769825d36089f6d08887\",\"dweb:/ipfs/QmXVp7AwoHFm4whU26XE9kvaYmfb4QyXrzsqaEGXvgybFN\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xe04b4ed1aab8779734d012e907f742e8b6e8ad539c01d5466b9eb58752fdc514\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://667941f2ea3584629681a303e988ffcbc33a2e8313f4658ad8700b2209b3ea4d\",\"dweb:/ipfs/QmafqLrntkf6gRyhAHt4wYojdHwuZXeD8gcE7FJWW6rKWm\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0xb2c4a89b2ee4538b41badb2b6e2d141deeca68be9298ec3e7f98b6812b4ee2a2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bf3e8a68c38541e0425dfd1f825371086a9a18eaadf12000e00b0440156198b\",\"dweb:/ipfs/QmcfasSoXaDg5A5dscMiKH41fWnCFnbJfpSAzn5gbMaVxd\"]}},\"version\":1}",
      "bytecode": "60806040523480156200001157600080fd5b50604051620030b0380380620030b083398101604081905262000034916200012c565b600480546001600160a01b03199081166001600160a01b03998a1617909155600680548216978916979097179096556005805487169588169590951790945560408051808201909152601681527f54484520455448455245554d204f424a454354204954000000000000000000006020909101527f186184b38c30620314f957b261f907a96e7bd12c377a91dcf1ef57fdea9aad3760075560008054861693871693909317909255600280548516918616919091179055600380548416918516919091179055600180549092169216919091179055620001c0565b80516001600160a01b03811681146200012757600080fd5b919050565b600080600080600080600060e0888a03121562000147578283fd5b62000152886200010f565b965062000162602089016200010f565b955062000172604089016200010f565b945062000182606089016200010f565b935062000192608089016200010f565b9250620001a260a089016200010f565b9150620001b260c089016200010f565b905092959891949750929550565b612ee080620001d06000396000f3fe6080604052600436106102f65760003560e01c806385f8c2591161018f578063bc197c81116100e1578063d7565a0c1161008a578063f46901ed11610064578063f46901ed14610807578063f4734b0c14610827578063fb3bdb41146105c657610330565b8063d7565a0c146107a7578063ee1fae3c146107c7578063f23a6e61146107e757610330565b8063cafd47df116100bb578063cafd47df14610752578063cbd99d0314610767578063d06ca61f1461078757610330565b8063bc197c81146106fb578063be745fff14610728578063c45a01551461073d57610330565b80639e6371ba11610143578063b6ec79fe1161011d578063b6ec79fe146106a8578063b9bdb4ef146106c8578063bb8a88bb146106e857610330565b80639e6371ba146106485780639f18401114610668578063ad615dec1461068857610330565b80639187aaca116101745780639187aaca146105f957806396c92f5e146104bd5780639c82f2a41461062857610330565b806385f8c259146105d95780638803dbee1461049d57610330565b80633d0c2a34116102485780635909889d116101fc5780637796473a116101d65780637796473a14610576578063781cef2a146105a65780637ff36ab5146105c657610330565b80635909889d1461038b5780635bb4780814610536578063678700e01461055657610330565b80634a25d94a1161022d5780634a25d94a146103cb5780634eb9b5921461050c57806355809f9f1461052157610330565b80633d0c2a34146104bd57806347883c37146104dd57610330565b80631b5f58c8116102aa57806323ae84011161028457806323ae8401146104685780632b3297f91461048857806338ed17391461049d57610330565b80631b5f58c8146103eb5780631df199531461040d5780631f00ca741461043b57610330565b8063104870fd116102db578063104870fd1461038b57806311f38472146103ab57806318cbafe5146103cb57610330565b806302af0fb514610335578063054d50d41461035557610330565b36610330576005546001600160a01b0316331461032e5760405162461bcd60e51b815260040161032590612b0d565b60405180910390fd5b005b600080fd5b34801561034157600080fd5b5061032e6103503660046122ed565b61083c565b34801561036157600080fd5b50610375610370366004612513565b610841565b6040516103829190612c5b565b60405180910390f35b34801561039757600080fd5b5061032e6103a6366004612191565b610858565b3480156103b757600080fd5b5061032e6103c6366004612100565b610879565b3480156103d757600080fd5b5061032e6103e63660046124aa565b6108f5565b3480156103f757600080fd5b50610400610911565b60405161038291906126ea565b34801561041957600080fd5b5061042d61042836600461206a565b610920565b6040516103829291906127db565b34801561044757600080fd5b5061045b61045636600461234c565b610c16565b6040516103829190612815565b34801561047457600080fd5b5061032e610483366004611ebc565b610c39565b34801561049457600080fd5b50610400610c73565b3480156104a957600080fd5b5061045b6104b83660046124aa565b610c82565b3480156104c957600080fd5b5061032e6104d8366004612134565b610ca3565b3480156104e957600080fd5b506104fd6104f8366004611ebc565b610cc0565b60405161038293929190612794565b34801561051857600080fd5b50610400610dde565b34801561052d57600080fd5b50610400610ded565b34801561054257600080fd5b5061032e610551366004611ebc565b610dfc565b34801561056257600080fd5b5061032e610571366004612575565b610e36565b34801561058257600080fd5b50610596610591366004611ebc565b610e56565b60405161038294939291906127b5565b3480156105b257600080fd5b5061032e6105c1366004611ebc565b610f8f565b61032e6105d4366004612391565b610fc9565b3480156105e557600080fd5b506103756105f4366004612513565b610fe4565b34801561060557600080fd5b50610619610614366004612226565b610ff1565b60405161038293929190612c64565b34801561063457600080fd5b5061032e610643366004611ebc565b61101a565b34801561065457600080fd5b5061032e610663366004611ebc565b611054565b34801561067457600080fd5b5061032e610683366004611ebc565b6110ca565b34801561069457600080fd5b506103756106a3366004612513565b611104565b3480156106b457600080fd5b5061032e6106c3366004612029565b611111565b3480156106d457600080fd5b5061032e6106e3366004612489565b611121565b6106196106f636600461253e565b611211565b34801561070757600080fd5b5061071b610716366004611ef4565b611238565b6040516103829190612859565b34801561073457600080fd5b5061037561123f565b34801561074957600080fd5b50610400611245565b34801561075e57600080fd5b50610400611254565b34801561077357600080fd5b5061032e610782366004611ebc565b611263565b34801561079357600080fd5b5061045b6107a236600461234c565b61129d565b3480156107b357600080fd5b5061032e6107c2366004611ebc565b6112b7565b3480156107d357600080fd5b5061032e6107e236600461253e565b6112f1565b3480156107f357600080fd5b5061071b610802366004611faf565b611306565b34801561081357600080fd5b5061032e610822366004611ebc565b6113a7565b34801561083357600080fd5b506104006113ef565b600755565b600061084e8484846113fe565b90505b9392505050565b60035461086d906001600160a01b0316611498565b50505050505050505050565b6004546006546001600160a01b03918216916311f384729161089e91849116876114bc565b84846040518463ffffffff1660e01b81526004016108be939291906127f4565b600060405180830381600087803b1580156108d857600080fd5b505af11580156108ec573d6000803e3d6000fd5b50505050505050565b60015461090a906001600160a01b0316611498565b5050505050565b6005546001600160a01b031681565b60008061092f8987308b61152c565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815288906001600160a01b038b169063dd62ed3e906109789030908c906004016126fe565b60206040518083038186803b15801561099057600080fd5b505afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190612305565b1015610a6b576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038a169063095ea7b390610a17908a90600019906004016127db565b602060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a69919061228e565b505b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526000906001600160a01b038916906340c10f1990610ab5908d908d906004016127db565b6040805180830381600087803b158015610ace57600080fd5b505af1158015610ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b06919061231d565b8094508192505050876001600160a01b031663f242432a3088848e6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190612305565b610b9c906012612e0f565b610ba790600a612d22565b610bb1908f612df0565b9650868a8a6040518763ffffffff1660e01b8152600401610bd79695949392919061273c565b600060405180830381600087803b158015610bf157600080fd5b505af1158015610c05573d6000803e3d6000fd5b505050505097509795505050505050565b600454606090610c30906001600160a01b03168484611629565b90505b92915050565b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b600154606090610c9a906001600160a01b0316611498565b95945050505050565b600354610cb8906001600160a01b0316611498565b505050505050565b600080806001600160a01b038416610ce057506000915081905080610dd7565b836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1957600080fd5b505afa925050508015610d49575060408051601f3d908101601f19168201909252610d4691810190611ed8565b60015b610d5b57506000915081905080610dd7565b806001866001600160a01b031663d4d5a06d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9757600080fd5b505afa158015610dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcf9190612305565b935093509350505b9193909250565b6000546001600160a01b031681565b6002546001600160a01b031681565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600354610e4b906001600160a01b0316611498565b505050505050505050565b6000806000806000610e6786610cc0565b919650909350905080610e8857600080600080945094509450945050610f88565b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ec157600080fd5b505afa925050508015610ef1575060408051601f3d908101601f19168201909252610eee91810190612305565b60015b610f0957600080600080945094509450945050610f88565b856001886001600160a01b031663d4d5a06d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4557600080fd5b505afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d9190612305565b919750955093509150505b9193509193565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600154610fde906001600160a01b0316611498565b50505050565b600061084e8484846117e3565b6002546000908190819061100d906001600160a01b0316611498565b9750975097945050505050565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600480546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163f2fde38b9161109c918591016126ea565b600060405180830381600087803b1580156110b657600080fd5b505af115801561090a573d6000803e3d6000fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600061084e848484611877565b61111c8382846118d9565b505050565b600480546040517f794366e60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163794366e69161116991869101612c5b565b600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b5050600480546040517f334dc4f30000000000000000000000000000000000000000000000000000000081526001600160a01b03909116935063334dc4f392506111e391859101612c5b565b600060405180830381600087803b1580156111fd57600080fd5b505af1158015610cb8573d6000803e3d6000fd5b6002546000908190819061122d906001600160a01b0316611498565b955095509592505050565b6000806000fd5b60075481565b6004546001600160a01b031681565b6003546001600160a01b031681565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600454606090610c30906001600160a01b031684846119d4565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60035461090a906001600160a01b0316611498565b600080611315838501856123f0565b509050806001141561133b57600254611336906001600160a01b0316611498565b61137a565b806002148061134a5750806003145b806113555750806004145b806113605750806005145b1561033057600154611336906001600160a01b0316611498565b507ff23a6e6100000000000000000000000000000000000000000000000000000000979650505050505050565b600480546040517ff46901ed0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163f46901ed9161109c918591016126ea565b6006546001600160a01b031681565b600080841161141f5760405162461bcd60e51b815260040161032590612a53565b60008311801561142f5750600082115b61144b5760405162461bcd60e51b815260040161032590612b6a565b6000611459856103e5611b6e565b905060006114678285611b6e565b905060006114818361147b886103e8611b6e565b90611bae565b905061148d8183612cbc565b979650505050505050565b3660008037600080366000845af43d6000803e8080156114b7573d6000f35b3d6000fd5b60008060006114cb8585611bdc565b915091508582826040516020016114e39291906125f6565b6040516020818303038152906040528051906020012060405160200161150a929190612669565b60408051601f1981840301815291905280516020909101209695505050505050565b600080856001600160a01b03166323b872dd86868660405160240161155393929190612718565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115a19190612630565b6000604051808303816000865af19150503d80600081146115de576040519150601f19603f3d011682016040523d82523d6000602084013e6115e3565b606091505b509150915081801561160d57508051158061160d57508080602001905181019061160d919061228e565b610cb85760405162461bcd60e51b815260040161032590612bc7565b606060028251101561164d5760405162461bcd60e51b815260040161032590612a1c565b815167ffffffffffffffff81111561167557634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561169e578160200160208202803683370190505b5090508281600183516116b19190612e0f565b815181106116cf57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250506000600183516116eb9190612e0f565b90505b80156117db5760008061175a8786611707600187612e0f565b8151811061172557634e487b7160e01b600052603260045260246000fd5b602002602001015187868151811061174d57634e487b7160e01b600052603260045260246000fd5b6020026020010151611c66565b9150915061179084848151811061178157634e487b7160e01b600052603260045260246000fd5b602002602001015183836117e3565b8461179c600186612e0f565b815181106117ba57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050505080806117d390612e26565b9150506116ee565b509392505050565b60008084116118045760405162461bcd60e51b8152600401610325906129bf565b6000831180156118145750600082115b6118305760405162461bcd60e51b815260040161032590612b6a565b60006118486103e86118428688611b6e565b90611b6e565b9050600061185c6103e56118428689611d4d565b905061186d600161147b8385612cbc565b9695505050505050565b60008084116118985760405162461bcd60e51b815260040161032590612962565b6000831180156118a85750600082115b6118c45760405162461bcd60e51b815260040161032590612b6a565b826118cf8584611b6e565b61084e9190612cbc565b600080846001600160a01b031663a9059cbb85856040516024016118fe9291906127db565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161194c9190612630565b6000604051808303816000865af19150503d8060008114611989576040519150601f19603f3d011682016040523d82523d6000602084013e61198e565b606091505b50915091508180156119b85750805115806119b85750808060200190518101906119b8919061228e565b61090a5760405162461bcd60e51b8152600401610325906128bd565b60606002825110156119f85760405162461bcd60e51b815260040161032590612a1c565b815167ffffffffffffffff811115611a2057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611a49578160200160208202803683370190505b5090508281600081518110611a6e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505060005b60018351611a8b9190612e0f565b8110156117db57600080611aed87868581518110611ab957634e487b7160e01b600052603260045260246000fd5b602002602001015187866001611acf9190612ca4565b8151811061174d57634e487b7160e01b600052603260045260246000fd5b91509150611b23848481518110611b1457634e487b7160e01b600052603260045260246000fd5b602002602001015183836113fe565b84611b2f856001612ca4565b81518110611b4d57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505050508080611b6690612e3d565b915050611a7d565b6000811580611b9257508282611b848183612df0565b9250611b909083612cbc565b145b610c335760405162461bcd60e51b8152600401610325906128f4565b600082611bbb8382612ca4565b9150811015610c335760405162461bcd60e51b81526004016103259061292b565b600080826001600160a01b0316846001600160a01b03161415611c115760405162461bcd60e51b815260040161032590612ab0565b826001600160a01b0316846001600160a01b031610611c31578284611c34565b83835b90925090506001600160a01b038216611c5f5760405162461bcd60e51b815260040161032590612c24565b9250929050565b6000806000611c758585611bdc565b509050600080611c868888886114bc565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611cbe57600080fd5b505afa158015611cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf691906122aa565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611d3b578082611d3e565b81815b90999098509650505050505050565b600082611d5a8382612e0f565b9150811115610c335760405162461bcd60e51b815260040161032590612886565b600082601f830112611d8b578081fd5b8135602067ffffffffffffffff821115611da757611da7612e6e565b808202611db5828201612c7a565b838152828101908684018388018501891015611dcf578687fd5b8693505b85841015611dfa578035611de681612e84565b835260019390930192918401918401611dd3565b50979650505050505050565b60008083601f840112611e17578182fd5b50813567ffffffffffffffff811115611e2e578182fd5b6020830191508360208083028501011115611c5f57600080fd5b60008083601f840112611e59578182fd5b50813567ffffffffffffffff811115611e70578182fd5b602083019150836020828501011115611c5f57600080fd5b80516dffffffffffffffffffffffffffff81168114611ea657600080fd5b919050565b803560ff81168114611ea657600080fd5b600060208284031215611ecd578081fd5b813561085181612e84565b600060208284031215611ee9578081fd5b815161085181612e84565b60008060008060008060008060a0898b031215611f0f578384fd5b8835611f1a81612e84565b97506020890135611f2a81612e84565b9650604089013567ffffffffffffffff80821115611f46578586fd5b611f528c838d01611e06565b909850965060608b0135915080821115611f6a578586fd5b611f768c838d01611e06565b909650945060808b0135915080821115611f8e578384fd5b50611f9b8b828c01611e48565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611fc7578182fd5b8635611fd281612e84565b95506020870135611fe281612e84565b94506040870135935060608701359250608087013567ffffffffffffffff81111561200b578283fd5b61201789828a01611e48565b979a9699509497509295939492505050565b60008060006060848603121561203d578283fd5b833561204881612e84565b925060208401359150604084013561205f81612e84565b809150509250925092565b600080600080600080600060c0888a031215612084578283fd5b873561208f81612e84565b96506020880135955060408801356120a681612e84565b945060608801356120b681612e84565b935060808801356120c681612e84565b925060a088013567ffffffffffffffff8111156120e1578283fd5b6120ed8a828b01611e48565b989b979a50959850939692959293505050565b600080600060608486031215612114578081fd5b833561211f81612e84565b95602085013595506040909401359392505050565b60008060008060008060c0878903121561214c578384fd5b863561215781612e84565b9550602087013594506040870135935060608701359250608087013561217c81612e84565b8092505060a087013590509295509295509295565b6000806000806000806000806000806101408b8d0312156121b0578384fd5b8a356121bb81612e84565b995060208b0135985060408b0135975060608b0135965060808b01356121e081612e84565b955060a08b0135945060c08b01356121f781612e9c565b935061220560e08c01611eab565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600080600080600080600060e0888a031215612240578081fd5b873561224b81612e84565b96506020880135955060408801359450606088013593506080880135925060a088013561227781612e84565b8092505060c0880135905092959891949750929550565b60006020828403121561229f578081fd5b815161085181612e9c565b6000806000606084860312156122be578081fd5b6122c784611e88565b92506122d560208501611e88565b9150604084015163ffffffff8116811461205f578182fd5b6000602082840312156122fe578081fd5b5035919050565b600060208284031215612316578081fd5b5051919050565b6000806040838503121561232f578182fd5b82519150602083015161234181612e84565b809150509250929050565b6000806040838503121561235e578182fd5b82359150602083013567ffffffffffffffff81111561237b578182fd5b61238785828601611d7b565b9150509250929050565b600080600080608085870312156123a6578182fd5b84359350602085013567ffffffffffffffff8111156123c3578283fd5b6123cf87828801611d7b565b93505060408501356123e081612e84565b9396929550929360600135925050565b60008060408385031215612402578182fd5b8235915060208084013567ffffffffffffffff80821115612421578384fd5b818601915086601f830112612434578384fd5b81358181111561244657612446612e6e565b61245884601f19601f84011601612c7a565b9150808252878482850101111561246d578485fd5b8084840185840137810190920192909252919491935090915050565b6000806040838503121561249b578182fd5b50508035926020909101359150565b600080600080600060a086880312156124c1578283fd5b8535945060208601359350604086013567ffffffffffffffff8111156124e5578384fd5b6124f188828901611d7b565b935050606086013561250281612e84565b949793965091946080013592915050565b600080600060608486031215612527578081fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215612555578283fd5b853594506020860135935060408601359250606086013561250281612e84565b60008060008060008060008060006101208a8c031215612593578283fd5b8935985060208a0135975060408a0135965060608a01356125b381612e84565b955060808a0135945060a08a01356125ca81612e9c565b93506125d860c08b01611eab565b925060e08a013591506101008a013590509295985092959850929598565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b818110156126505760208186018101518583015201612636565b8181111561265e5782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006001600160a01b03808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c084013781830160c090810191909152601f909201601f1916010195945050505050565b6001600160a01b039390931683529015156020830152604082015260600190565b6001600160a01b0394909416845291151560208401526040830152606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b6020808252825182820181905260009190848201906040850190845b8181101561284d57835183529284019291840191600101612831565b50909695505050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4f555460408201527f5055545f414d4f554e5400000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a20494e56414c49445f5041544800000000604082015260600190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4f6e6c79204574684974656d2063616e2073656e642045544820746f2074686960408201527f7320636f6e747261637400000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715612c9c57612c9c612e6e565b604052919050565b60008219821115612cb757612cb7612e58565b500190565b600082612cd757634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611612cee5750612d19565b818704821115612d0057612d00612e58565b80861615612d0d57918102915b9490941c938002612cdf565b94509492505050565b6000610c306000198484600082612d3b57506001610851565b81612d4857506000610851565b8160018114612d5e5760028114612d6857612d95565b6001915050610851565b60ff841115612d7957612d79612e58565b6001841b915084821115612d8f57612d8f612e58565b50610851565b5060208310610133831016604e8410600b8410161715612dc8575081810a83811115612dc357612dc3612e58565b610851565b612dd58484846001612cdc565b808604821115612de757612de7612e58565b02949350505050565b6000816000190483118215151615612e0a57612e0a612e58565b500290565b600082821015612e2157612e21612e58565b500390565b600081612e3557612e35612e58565b506000190190565b6000600019821415612e5157612e51612e58565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612e9957600080fd5b50565b8015158114612e9957600080fdfea2646970667358221220fc1b0cdaff85fc1884e984debbd69766206f3aea4539dcd9f940d89c5ad1fc5664736f6c63430008000033",
      "bin": "60806040523480156200001157600080fd5b50604051620030b0380380620030b083398101604081905262000034916200012c565b600480546001600160a01b03199081166001600160a01b03998a1617909155600680548216978916979097179096556005805487169588169590951790945560408051808201909152601681527f54484520455448455245554d204f424a454354204954000000000000000000006020909101527f186184b38c30620314f957b261f907a96e7bd12c377a91dcf1ef57fdea9aad3760075560008054861693871693909317909255600280548516918616919091179055600380548416918516919091179055600180549092169216919091179055620001c0565b80516001600160a01b03811681146200012757600080fd5b919050565b600080600080600080600060e0888a03121562000147578283fd5b62000152886200010f565b965062000162602089016200010f565b955062000172604089016200010f565b945062000182606089016200010f565b935062000192608089016200010f565b9250620001a260a089016200010f565b9150620001b260c089016200010f565b905092959891949750929550565b612ee080620001d06000396000f3fe6080604052600436106102f65760003560e01c806385f8c2591161018f578063bc197c81116100e1578063d7565a0c1161008a578063f46901ed11610064578063f46901ed14610807578063f4734b0c14610827578063fb3bdb41146105c657610330565b8063d7565a0c146107a7578063ee1fae3c146107c7578063f23a6e61146107e757610330565b8063cafd47df116100bb578063cafd47df14610752578063cbd99d0314610767578063d06ca61f1461078757610330565b8063bc197c81146106fb578063be745fff14610728578063c45a01551461073d57610330565b80639e6371ba11610143578063b6ec79fe1161011d578063b6ec79fe146106a8578063b9bdb4ef146106c8578063bb8a88bb146106e857610330565b80639e6371ba146106485780639f18401114610668578063ad615dec1461068857610330565b80639187aaca116101745780639187aaca146105f957806396c92f5e146104bd5780639c82f2a41461062857610330565b806385f8c259146105d95780638803dbee1461049d57610330565b80633d0c2a34116102485780635909889d116101fc5780637796473a116101d65780637796473a14610576578063781cef2a146105a65780637ff36ab5146105c657610330565b80635909889d1461038b5780635bb4780814610536578063678700e01461055657610330565b80634a25d94a1161022d5780634a25d94a146103cb5780634eb9b5921461050c57806355809f9f1461052157610330565b80633d0c2a34146104bd57806347883c37146104dd57610330565b80631b5f58c8116102aa57806323ae84011161028457806323ae8401146104685780632b3297f91461048857806338ed17391461049d57610330565b80631b5f58c8146103eb5780631df199531461040d5780631f00ca741461043b57610330565b8063104870fd116102db578063104870fd1461038b57806311f38472146103ab57806318cbafe5146103cb57610330565b806302af0fb514610335578063054d50d41461035557610330565b36610330576005546001600160a01b0316331461032e5760405162461bcd60e51b815260040161032590612b0d565b60405180910390fd5b005b600080fd5b34801561034157600080fd5b5061032e6103503660046122ed565b61083c565b34801561036157600080fd5b50610375610370366004612513565b610841565b6040516103829190612c5b565b60405180910390f35b34801561039757600080fd5b5061032e6103a6366004612191565b610858565b3480156103b757600080fd5b5061032e6103c6366004612100565b610879565b3480156103d757600080fd5b5061032e6103e63660046124aa565b6108f5565b3480156103f757600080fd5b50610400610911565b60405161038291906126ea565b34801561041957600080fd5b5061042d61042836600461206a565b610920565b6040516103829291906127db565b34801561044757600080fd5b5061045b61045636600461234c565b610c16565b6040516103829190612815565b34801561047457600080fd5b5061032e610483366004611ebc565b610c39565b34801561049457600080fd5b50610400610c73565b3480156104a957600080fd5b5061045b6104b83660046124aa565b610c82565b3480156104c957600080fd5b5061032e6104d8366004612134565b610ca3565b3480156104e957600080fd5b506104fd6104f8366004611ebc565b610cc0565b60405161038293929190612794565b34801561051857600080fd5b50610400610dde565b34801561052d57600080fd5b50610400610ded565b34801561054257600080fd5b5061032e610551366004611ebc565b610dfc565b34801561056257600080fd5b5061032e610571366004612575565b610e36565b34801561058257600080fd5b50610596610591366004611ebc565b610e56565b60405161038294939291906127b5565b3480156105b257600080fd5b5061032e6105c1366004611ebc565b610f8f565b61032e6105d4366004612391565b610fc9565b3480156105e557600080fd5b506103756105f4366004612513565b610fe4565b34801561060557600080fd5b50610619610614366004612226565b610ff1565b60405161038293929190612c64565b34801561063457600080fd5b5061032e610643366004611ebc565b61101a565b34801561065457600080fd5b5061032e610663366004611ebc565b611054565b34801561067457600080fd5b5061032e610683366004611ebc565b6110ca565b34801561069457600080fd5b506103756106a3366004612513565b611104565b3480156106b457600080fd5b5061032e6106c3366004612029565b611111565b3480156106d457600080fd5b5061032e6106e3366004612489565b611121565b6106196106f636600461253e565b611211565b34801561070757600080fd5b5061071b610716366004611ef4565b611238565b6040516103829190612859565b34801561073457600080fd5b5061037561123f565b34801561074957600080fd5b50610400611245565b34801561075e57600080fd5b50610400611254565b34801561077357600080fd5b5061032e610782366004611ebc565b611263565b34801561079357600080fd5b5061045b6107a236600461234c565b61129d565b3480156107b357600080fd5b5061032e6107c2366004611ebc565b6112b7565b3480156107d357600080fd5b5061032e6107e236600461253e565b6112f1565b3480156107f357600080fd5b5061071b610802366004611faf565b611306565b34801561081357600080fd5b5061032e610822366004611ebc565b6113a7565b34801561083357600080fd5b506104006113ef565b600755565b600061084e8484846113fe565b90505b9392505050565b60035461086d906001600160a01b0316611498565b50505050505050505050565b6004546006546001600160a01b03918216916311f384729161089e91849116876114bc565b84846040518463ffffffff1660e01b81526004016108be939291906127f4565b600060405180830381600087803b1580156108d857600080fd5b505af11580156108ec573d6000803e3d6000fd5b50505050505050565b60015461090a906001600160a01b0316611498565b5050505050565b6005546001600160a01b031681565b60008061092f8987308b61152c565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815288906001600160a01b038b169063dd62ed3e906109789030908c906004016126fe565b60206040518083038186803b15801561099057600080fd5b505afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190612305565b1015610a6b576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038a169063095ea7b390610a17908a90600019906004016127db565b602060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a69919061228e565b505b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526000906001600160a01b038916906340c10f1990610ab5908d908d906004016127db565b6040805180830381600087803b158015610ace57600080fd5b505af1158015610ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b06919061231d565b8094508192505050876001600160a01b031663f242432a3088848e6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190612305565b610b9c906012612e0f565b610ba790600a612d22565b610bb1908f612df0565b9650868a8a6040518763ffffffff1660e01b8152600401610bd79695949392919061273c565b600060405180830381600087803b158015610bf157600080fd5b505af1158015610c05573d6000803e3d6000fd5b505050505097509795505050505050565b600454606090610c30906001600160a01b03168484611629565b90505b92915050565b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b600154606090610c9a906001600160a01b0316611498565b95945050505050565b600354610cb8906001600160a01b0316611498565b505050505050565b600080806001600160a01b038416610ce057506000915081905080610dd7565b836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1957600080fd5b505afa925050508015610d49575060408051601f3d908101601f19168201909252610d4691810190611ed8565b60015b610d5b57506000915081905080610dd7565b806001866001600160a01b031663d4d5a06d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9757600080fd5b505afa158015610dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcf9190612305565b935093509350505b9193909250565b6000546001600160a01b031681565b6002546001600160a01b031681565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600354610e4b906001600160a01b0316611498565b505050505050505050565b6000806000806000610e6786610cc0565b919650909350905080610e8857600080600080945094509450945050610f88565b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ec157600080fd5b505afa925050508015610ef1575060408051601f3d908101601f19168201909252610eee91810190612305565b60015b610f0957600080600080945094509450945050610f88565b856001886001600160a01b031663d4d5a06d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4557600080fd5b505afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d9190612305565b919750955093509150505b9193509193565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600154610fde906001600160a01b0316611498565b50505050565b600061084e8484846117e3565b6002546000908190819061100d906001600160a01b0316611498565b9750975097945050505050565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600480546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163f2fde38b9161109c918591016126ea565b600060405180830381600087803b1580156110b657600080fd5b505af115801561090a573d6000803e3d6000fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600061084e848484611877565b61111c8382846118d9565b505050565b600480546040517f794366e60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163794366e69161116991869101612c5b565b600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b5050600480546040517f334dc4f30000000000000000000000000000000000000000000000000000000081526001600160a01b03909116935063334dc4f392506111e391859101612c5b565b600060405180830381600087803b1580156111fd57600080fd5b505af1158015610cb8573d6000803e3d6000fd5b6002546000908190819061122d906001600160a01b0316611498565b955095509592505050565b6000806000fd5b60075481565b6004546001600160a01b031681565b6003546001600160a01b031681565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600454606090610c30906001600160a01b031684846119d4565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60035461090a906001600160a01b0316611498565b600080611315838501856123f0565b509050806001141561133b57600254611336906001600160a01b0316611498565b61137a565b806002148061134a5750806003145b806113555750806004145b806113605750806005145b1561033057600154611336906001600160a01b0316611498565b507ff23a6e6100000000000000000000000000000000000000000000000000000000979650505050505050565b600480546040517ff46901ed0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163f46901ed9161109c918591016126ea565b6006546001600160a01b031681565b600080841161141f5760405162461bcd60e51b815260040161032590612a53565b60008311801561142f5750600082115b61144b5760405162461bcd60e51b815260040161032590612b6a565b6000611459856103e5611b6e565b905060006114678285611b6e565b905060006114818361147b886103e8611b6e565b90611bae565b905061148d8183612cbc565b979650505050505050565b3660008037600080366000845af43d6000803e8080156114b7573d6000f35b3d6000fd5b60008060006114cb8585611bdc565b915091508582826040516020016114e39291906125f6565b6040516020818303038152906040528051906020012060405160200161150a929190612669565b60408051601f1981840301815291905280516020909101209695505050505050565b600080856001600160a01b03166323b872dd86868660405160240161155393929190612718565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115a19190612630565b6000604051808303816000865af19150503d80600081146115de576040519150601f19603f3d011682016040523d82523d6000602084013e6115e3565b606091505b509150915081801561160d57508051158061160d57508080602001905181019061160d919061228e565b610cb85760405162461bcd60e51b815260040161032590612bc7565b606060028251101561164d5760405162461bcd60e51b815260040161032590612a1c565b815167ffffffffffffffff81111561167557634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561169e578160200160208202803683370190505b5090508281600183516116b19190612e0f565b815181106116cf57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250506000600183516116eb9190612e0f565b90505b80156117db5760008061175a8786611707600187612e0f565b8151811061172557634e487b7160e01b600052603260045260246000fd5b602002602001015187868151811061174d57634e487b7160e01b600052603260045260246000fd5b6020026020010151611c66565b9150915061179084848151811061178157634e487b7160e01b600052603260045260246000fd5b602002602001015183836117e3565b8461179c600186612e0f565b815181106117ba57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050505080806117d390612e26565b9150506116ee565b509392505050565b60008084116118045760405162461bcd60e51b8152600401610325906129bf565b6000831180156118145750600082115b6118305760405162461bcd60e51b815260040161032590612b6a565b60006118486103e86118428688611b6e565b90611b6e565b9050600061185c6103e56118428689611d4d565b905061186d600161147b8385612cbc565b9695505050505050565b60008084116118985760405162461bcd60e51b815260040161032590612962565b6000831180156118a85750600082115b6118c45760405162461bcd60e51b815260040161032590612b6a565b826118cf8584611b6e565b61084e9190612cbc565b600080846001600160a01b031663a9059cbb85856040516024016118fe9291906127db565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161194c9190612630565b6000604051808303816000865af19150503d8060008114611989576040519150601f19603f3d011682016040523d82523d6000602084013e61198e565b606091505b50915091508180156119b85750805115806119b85750808060200190518101906119b8919061228e565b61090a5760405162461bcd60e51b8152600401610325906128bd565b60606002825110156119f85760405162461bcd60e51b815260040161032590612a1c565b815167ffffffffffffffff811115611a2057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611a49578160200160208202803683370190505b5090508281600081518110611a6e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505060005b60018351611a8b9190612e0f565b8110156117db57600080611aed87868581518110611ab957634e487b7160e01b600052603260045260246000fd5b602002602001015187866001611acf9190612ca4565b8151811061174d57634e487b7160e01b600052603260045260246000fd5b91509150611b23848481518110611b1457634e487b7160e01b600052603260045260246000fd5b602002602001015183836113fe565b84611b2f856001612ca4565b81518110611b4d57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505050508080611b6690612e3d565b915050611a7d565b6000811580611b9257508282611b848183612df0565b9250611b909083612cbc565b145b610c335760405162461bcd60e51b8152600401610325906128f4565b600082611bbb8382612ca4565b9150811015610c335760405162461bcd60e51b81526004016103259061292b565b600080826001600160a01b0316846001600160a01b03161415611c115760405162461bcd60e51b815260040161032590612ab0565b826001600160a01b0316846001600160a01b031610611c31578284611c34565b83835b90925090506001600160a01b038216611c5f5760405162461bcd60e51b815260040161032590612c24565b9250929050565b6000806000611c758585611bdc565b509050600080611c868888886114bc565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611cbe57600080fd5b505afa158015611cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf691906122aa565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611d3b578082611d3e565b81815b90999098509650505050505050565b600082611d5a8382612e0f565b9150811115610c335760405162461bcd60e51b815260040161032590612886565b600082601f830112611d8b578081fd5b8135602067ffffffffffffffff821115611da757611da7612e6e565b808202611db5828201612c7a565b838152828101908684018388018501891015611dcf578687fd5b8693505b85841015611dfa578035611de681612e84565b835260019390930192918401918401611dd3565b50979650505050505050565b60008083601f840112611e17578182fd5b50813567ffffffffffffffff811115611e2e578182fd5b6020830191508360208083028501011115611c5f57600080fd5b60008083601f840112611e59578182fd5b50813567ffffffffffffffff811115611e70578182fd5b602083019150836020828501011115611c5f57600080fd5b80516dffffffffffffffffffffffffffff81168114611ea657600080fd5b919050565b803560ff81168114611ea657600080fd5b600060208284031215611ecd578081fd5b813561085181612e84565b600060208284031215611ee9578081fd5b815161085181612e84565b60008060008060008060008060a0898b031215611f0f578384fd5b8835611f1a81612e84565b97506020890135611f2a81612e84565b9650604089013567ffffffffffffffff80821115611f46578586fd5b611f528c838d01611e06565b909850965060608b0135915080821115611f6a578586fd5b611f768c838d01611e06565b909650945060808b0135915080821115611f8e578384fd5b50611f9b8b828c01611e48565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611fc7578182fd5b8635611fd281612e84565b95506020870135611fe281612e84565b94506040870135935060608701359250608087013567ffffffffffffffff81111561200b578283fd5b61201789828a01611e48565b979a9699509497509295939492505050565b60008060006060848603121561203d578283fd5b833561204881612e84565b925060208401359150604084013561205f81612e84565b809150509250925092565b600080600080600080600060c0888a031215612084578283fd5b873561208f81612e84565b96506020880135955060408801356120a681612e84565b945060608801356120b681612e84565b935060808801356120c681612e84565b925060a088013567ffffffffffffffff8111156120e1578283fd5b6120ed8a828b01611e48565b989b979a50959850939692959293505050565b600080600060608486031215612114578081fd5b833561211f81612e84565b95602085013595506040909401359392505050565b60008060008060008060c0878903121561214c578384fd5b863561215781612e84565b9550602087013594506040870135935060608701359250608087013561217c81612e84565b8092505060a087013590509295509295509295565b6000806000806000806000806000806101408b8d0312156121b0578384fd5b8a356121bb81612e84565b995060208b0135985060408b0135975060608b0135965060808b01356121e081612e84565b955060a08b0135945060c08b01356121f781612e9c565b935061220560e08c01611eab565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600080600080600080600060e0888a031215612240578081fd5b873561224b81612e84565b96506020880135955060408801359450606088013593506080880135925060a088013561227781612e84565b8092505060c0880135905092959891949750929550565b60006020828403121561229f578081fd5b815161085181612e9c565b6000806000606084860312156122be578081fd5b6122c784611e88565b92506122d560208501611e88565b9150604084015163ffffffff8116811461205f578182fd5b6000602082840312156122fe578081fd5b5035919050565b600060208284031215612316578081fd5b5051919050565b6000806040838503121561232f578182fd5b82519150602083015161234181612e84565b809150509250929050565b6000806040838503121561235e578182fd5b82359150602083013567ffffffffffffffff81111561237b578182fd5b61238785828601611d7b565b9150509250929050565b600080600080608085870312156123a6578182fd5b84359350602085013567ffffffffffffffff8111156123c3578283fd5b6123cf87828801611d7b565b93505060408501356123e081612e84565b9396929550929360600135925050565b60008060408385031215612402578182fd5b8235915060208084013567ffffffffffffffff80821115612421578384fd5b818601915086601f830112612434578384fd5b81358181111561244657612446612e6e565b61245884601f19601f84011601612c7a565b9150808252878482850101111561246d578485fd5b8084840185840137810190920192909252919491935090915050565b6000806040838503121561249b578182fd5b50508035926020909101359150565b600080600080600060a086880312156124c1578283fd5b8535945060208601359350604086013567ffffffffffffffff8111156124e5578384fd5b6124f188828901611d7b565b935050606086013561250281612e84565b949793965091946080013592915050565b600080600060608486031215612527578081fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215612555578283fd5b853594506020860135935060408601359250606086013561250281612e84565b60008060008060008060008060006101208a8c031215612593578283fd5b8935985060208a0135975060408a0135965060608a01356125b381612e84565b955060808a0135945060a08a01356125ca81612e9c565b93506125d860c08b01611eab565b925060e08a013591506101008a013590509295985092959850929598565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b818110156126505760208186018101518583015201612636565b8181111561265e5782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006001600160a01b03808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c084013781830160c090810191909152601f909201601f1916010195945050505050565b6001600160a01b039390931683529015156020830152604082015260600190565b6001600160a01b0394909416845291151560208401526040830152606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b6020808252825182820181905260009190848201906040850190845b8181101561284d57835183529284019291840191600101612831565b50909695505050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4f555460408201527f5055545f414d4f554e5400000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a20494e56414c49445f5041544800000000604082015260600190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4f6e6c79204574684974656d2063616e2073656e642045544820746f2074686960408201527f7320636f6e747261637400000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715612c9c57612c9c612e6e565b604052919050565b60008219821115612cb757612cb7612e58565b500190565b600082612cd757634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611612cee5750612d19565b818704821115612d0057612d00612e58565b80861615612d0d57918102915b9490941c938002612cdf565b94509492505050565b6000610c306000198484600082612d3b57506001610851565b81612d4857506000610851565b8160018114612d5e5760028114612d6857612d95565b6001915050610851565b60ff841115612d7957612d79612e58565b6001841b915084821115612d8f57612d8f612e58565b50610851565b5060208310610133831016604e8410600b8410161715612dc8575081810a83811115612dc357612dc3612e58565b610851565b612dd58484846001612cdc565b808604821115612de757612de7612e58565b02949350505050565b6000816000190483118215151615612e0a57612e0a612e58565b500290565b600082821015612e2157612e21612e58565b500390565b600081612e3557612e35612e58565b506000190190565b6000600019821415612e5157612e51612e58565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612e9957600080fd5b50565b8015158114612e9957600080fdfea2646970667358221220fc1b0cdaff85fc1884e984debbd69766206f3aea4539dcd9f940d89c5ad1fc5664736f6c63430008000033",
      "bin-runtime": "6080604052600436106102f65760003560e01c806385f8c2591161018f578063bc197c81116100e1578063d7565a0c1161008a578063f46901ed11610064578063f46901ed14610807578063f4734b0c14610827578063fb3bdb41146105c657610330565b8063d7565a0c146107a7578063ee1fae3c146107c7578063f23a6e61146107e757610330565b8063cafd47df116100bb578063cafd47df14610752578063cbd99d0314610767578063d06ca61f1461078757610330565b8063bc197c81146106fb578063be745fff14610728578063c45a01551461073d57610330565b80639e6371ba11610143578063b6ec79fe1161011d578063b6ec79fe146106a8578063b9bdb4ef146106c8578063bb8a88bb146106e857610330565b80639e6371ba146106485780639f18401114610668578063ad615dec1461068857610330565b80639187aaca116101745780639187aaca146105f957806396c92f5e146104bd5780639c82f2a41461062857610330565b806385f8c259146105d95780638803dbee1461049d57610330565b80633d0c2a34116102485780635909889d116101fc5780637796473a116101d65780637796473a14610576578063781cef2a146105a65780637ff36ab5146105c657610330565b80635909889d1461038b5780635bb4780814610536578063678700e01461055657610330565b80634a25d94a1161022d5780634a25d94a146103cb5780634eb9b5921461050c57806355809f9f1461052157610330565b80633d0c2a34146104bd57806347883c37146104dd57610330565b80631b5f58c8116102aa57806323ae84011161028457806323ae8401146104685780632b3297f91461048857806338ed17391461049d57610330565b80631b5f58c8146103eb5780631df199531461040d5780631f00ca741461043b57610330565b8063104870fd116102db578063104870fd1461038b57806311f38472146103ab57806318cbafe5146103cb57610330565b806302af0fb514610335578063054d50d41461035557610330565b36610330576005546001600160a01b0316331461032e5760405162461bcd60e51b815260040161032590612b0d565b60405180910390fd5b005b600080fd5b34801561034157600080fd5b5061032e6103503660046122ed565b61083c565b34801561036157600080fd5b50610375610370366004612513565b610841565b6040516103829190612c5b565b60405180910390f35b34801561039757600080fd5b5061032e6103a6366004612191565b610858565b3480156103b757600080fd5b5061032e6103c6366004612100565b610879565b3480156103d757600080fd5b5061032e6103e63660046124aa565b6108f5565b3480156103f757600080fd5b50610400610911565b60405161038291906126ea565b34801561041957600080fd5b5061042d61042836600461206a565b610920565b6040516103829291906127db565b34801561044757600080fd5b5061045b61045636600461234c565b610c16565b6040516103829190612815565b34801561047457600080fd5b5061032e610483366004611ebc565b610c39565b34801561049457600080fd5b50610400610c73565b3480156104a957600080fd5b5061045b6104b83660046124aa565b610c82565b3480156104c957600080fd5b5061032e6104d8366004612134565b610ca3565b3480156104e957600080fd5b506104fd6104f8366004611ebc565b610cc0565b60405161038293929190612794565b34801561051857600080fd5b50610400610dde565b34801561052d57600080fd5b50610400610ded565b34801561054257600080fd5b5061032e610551366004611ebc565b610dfc565b34801561056257600080fd5b5061032e610571366004612575565b610e36565b34801561058257600080fd5b50610596610591366004611ebc565b610e56565b60405161038294939291906127b5565b3480156105b257600080fd5b5061032e6105c1366004611ebc565b610f8f565b61032e6105d4366004612391565b610fc9565b3480156105e557600080fd5b506103756105f4366004612513565b610fe4565b34801561060557600080fd5b50610619610614366004612226565b610ff1565b60405161038293929190612c64565b34801561063457600080fd5b5061032e610643366004611ebc565b61101a565b34801561065457600080fd5b5061032e610663366004611ebc565b611054565b34801561067457600080fd5b5061032e610683366004611ebc565b6110ca565b34801561069457600080fd5b506103756106a3366004612513565b611104565b3480156106b457600080fd5b5061032e6106c3366004612029565b611111565b3480156106d457600080fd5b5061032e6106e3366004612489565b611121565b6106196106f636600461253e565b611211565b34801561070757600080fd5b5061071b610716366004611ef4565b611238565b6040516103829190612859565b34801561073457600080fd5b5061037561123f565b34801561074957600080fd5b50610400611245565b34801561075e57600080fd5b50610400611254565b34801561077357600080fd5b5061032e610782366004611ebc565b611263565b34801561079357600080fd5b5061045b6107a236600461234c565b61129d565b3480156107b357600080fd5b5061032e6107c2366004611ebc565b6112b7565b3480156107d357600080fd5b5061032e6107e236600461253e565b6112f1565b3480156107f357600080fd5b5061071b610802366004611faf565b611306565b34801561081357600080fd5b5061032e610822366004611ebc565b6113a7565b34801561083357600080fd5b506104006113ef565b600755565b600061084e8484846113fe565b90505b9392505050565b60035461086d906001600160a01b0316611498565b50505050505050505050565b6004546006546001600160a01b03918216916311f384729161089e91849116876114bc565b84846040518463ffffffff1660e01b81526004016108be939291906127f4565b600060405180830381600087803b1580156108d857600080fd5b505af11580156108ec573d6000803e3d6000fd5b50505050505050565b60015461090a906001600160a01b0316611498565b5050505050565b6005546001600160a01b031681565b60008061092f8987308b61152c565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815288906001600160a01b038b169063dd62ed3e906109789030908c906004016126fe565b60206040518083038186803b15801561099057600080fd5b505afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190612305565b1015610a6b576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038a169063095ea7b390610a17908a90600019906004016127db565b602060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a69919061228e565b505b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526000906001600160a01b038916906340c10f1990610ab5908d908d906004016127db565b6040805180830381600087803b158015610ace57600080fd5b505af1158015610ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b06919061231d565b8094508192505050876001600160a01b031663f242432a3088848e6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190612305565b610b9c906012612e0f565b610ba790600a612d22565b610bb1908f612df0565b9650868a8a6040518763ffffffff1660e01b8152600401610bd79695949392919061273c565b600060405180830381600087803b158015610bf157600080fd5b505af1158015610c05573d6000803e3d6000fd5b505050505097509795505050505050565b600454606090610c30906001600160a01b03168484611629565b90505b92915050565b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b600154606090610c9a906001600160a01b0316611498565b95945050505050565b600354610cb8906001600160a01b0316611498565b505050505050565b600080806001600160a01b038416610ce057506000915081905080610dd7565b836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1957600080fd5b505afa925050508015610d49575060408051601f3d908101601f19168201909252610d4691810190611ed8565b60015b610d5b57506000915081905080610dd7565b806001866001600160a01b031663d4d5a06d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9757600080fd5b505afa158015610dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcf9190612305565b935093509350505b9193909250565b6000546001600160a01b031681565b6002546001600160a01b031681565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600354610e4b906001600160a01b0316611498565b505050505050505050565b6000806000806000610e6786610cc0565b919650909350905080610e8857600080600080945094509450945050610f88565b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ec157600080fd5b505afa925050508015610ef1575060408051601f3d908101601f19168201909252610eee91810190612305565b60015b610f0957600080600080945094509450945050610f88565b856001886001600160a01b031663d4d5a06d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4557600080fd5b505afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d9190612305565b919750955093509150505b9193509193565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600154610fde906001600160a01b0316611498565b50505050565b600061084e8484846117e3565b6002546000908190819061100d906001600160a01b0316611498565b9750975097945050505050565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600480546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163f2fde38b9161109c918591016126ea565b600060405180830381600087803b1580156110b657600080fd5b505af115801561090a573d6000803e3d6000fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600061084e848484611877565b61111c8382846118d9565b505050565b600480546040517f794366e60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163794366e69161116991869101612c5b565b600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b5050600480546040517f334dc4f30000000000000000000000000000000000000000000000000000000081526001600160a01b03909116935063334dc4f392506111e391859101612c5b565b600060405180830381600087803b1580156111fd57600080fd5b505af1158015610cb8573d6000803e3d6000fd5b6002546000908190819061122d906001600160a01b0316611498565b955095509592505050565b6000806000fd5b60075481565b6004546001600160a01b031681565b6003546001600160a01b031681565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600454606090610c30906001600160a01b031684846119d4565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60035461090a906001600160a01b0316611498565b600080611315838501856123f0565b509050806001141561133b57600254611336906001600160a01b0316611498565b61137a565b806002148061134a5750806003145b806113555750806004145b806113605750806005145b1561033057600154611336906001600160a01b0316611498565b507ff23a6e6100000000000000000000000000000000000000000000000000000000979650505050505050565b600480546040517ff46901ed0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163f46901ed9161109c918591016126ea565b6006546001600160a01b031681565b600080841161141f5760405162461bcd60e51b815260040161032590612a53565b60008311801561142f5750600082115b61144b5760405162461bcd60e51b815260040161032590612b6a565b6000611459856103e5611b6e565b905060006114678285611b6e565b905060006114818361147b886103e8611b6e565b90611bae565b905061148d8183612cbc565b979650505050505050565b3660008037600080366000845af43d6000803e8080156114b7573d6000f35b3d6000fd5b60008060006114cb8585611bdc565b915091508582826040516020016114e39291906125f6565b6040516020818303038152906040528051906020012060405160200161150a929190612669565b60408051601f1981840301815291905280516020909101209695505050505050565b600080856001600160a01b03166323b872dd86868660405160240161155393929190612718565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115a19190612630565b6000604051808303816000865af19150503d80600081146115de576040519150601f19603f3d011682016040523d82523d6000602084013e6115e3565b606091505b509150915081801561160d57508051158061160d57508080602001905181019061160d919061228e565b610cb85760405162461bcd60e51b815260040161032590612bc7565b606060028251101561164d5760405162461bcd60e51b815260040161032590612a1c565b815167ffffffffffffffff81111561167557634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561169e578160200160208202803683370190505b5090508281600183516116b19190612e0f565b815181106116cf57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250506000600183516116eb9190612e0f565b90505b80156117db5760008061175a8786611707600187612e0f565b8151811061172557634e487b7160e01b600052603260045260246000fd5b602002602001015187868151811061174d57634e487b7160e01b600052603260045260246000fd5b6020026020010151611c66565b9150915061179084848151811061178157634e487b7160e01b600052603260045260246000fd5b602002602001015183836117e3565b8461179c600186612e0f565b815181106117ba57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050505080806117d390612e26565b9150506116ee565b509392505050565b60008084116118045760405162461bcd60e51b8152600401610325906129bf565b6000831180156118145750600082115b6118305760405162461bcd60e51b815260040161032590612b6a565b60006118486103e86118428688611b6e565b90611b6e565b9050600061185c6103e56118428689611d4d565b905061186d600161147b8385612cbc565b9695505050505050565b60008084116118985760405162461bcd60e51b815260040161032590612962565b6000831180156118a85750600082115b6118c45760405162461bcd60e51b815260040161032590612b6a565b826118cf8584611b6e565b61084e9190612cbc565b600080846001600160a01b031663a9059cbb85856040516024016118fe9291906127db565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161194c9190612630565b6000604051808303816000865af19150503d8060008114611989576040519150601f19603f3d011682016040523d82523d6000602084013e61198e565b606091505b50915091508180156119b85750805115806119b85750808060200190518101906119b8919061228e565b61090a5760405162461bcd60e51b8152600401610325906128bd565b60606002825110156119f85760405162461bcd60e51b815260040161032590612a1c565b815167ffffffffffffffff811115611a2057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611a49578160200160208202803683370190505b5090508281600081518110611a6e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505060005b60018351611a8b9190612e0f565b8110156117db57600080611aed87868581518110611ab957634e487b7160e01b600052603260045260246000fd5b602002602001015187866001611acf9190612ca4565b8151811061174d57634e487b7160e01b600052603260045260246000fd5b91509150611b23848481518110611b1457634e487b7160e01b600052603260045260246000fd5b602002602001015183836113fe565b84611b2f856001612ca4565b81518110611b4d57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505050508080611b6690612e3d565b915050611a7d565b6000811580611b9257508282611b848183612df0565b9250611b909083612cbc565b145b610c335760405162461bcd60e51b8152600401610325906128f4565b600082611bbb8382612ca4565b9150811015610c335760405162461bcd60e51b81526004016103259061292b565b600080826001600160a01b0316846001600160a01b03161415611c115760405162461bcd60e51b815260040161032590612ab0565b826001600160a01b0316846001600160a01b031610611c31578284611c34565b83835b90925090506001600160a01b038216611c5f5760405162461bcd60e51b815260040161032590612c24565b9250929050565b6000806000611c758585611bdc565b509050600080611c868888886114bc565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611cbe57600080fd5b505afa158015611cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf691906122aa565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611d3b578082611d3e565b81815b90999098509650505050505050565b600082611d5a8382612e0f565b9150811115610c335760405162461bcd60e51b815260040161032590612886565b600082601f830112611d8b578081fd5b8135602067ffffffffffffffff821115611da757611da7612e6e565b808202611db5828201612c7a565b838152828101908684018388018501891015611dcf578687fd5b8693505b85841015611dfa578035611de681612e84565b835260019390930192918401918401611dd3565b50979650505050505050565b60008083601f840112611e17578182fd5b50813567ffffffffffffffff811115611e2e578182fd5b6020830191508360208083028501011115611c5f57600080fd5b60008083601f840112611e59578182fd5b50813567ffffffffffffffff811115611e70578182fd5b602083019150836020828501011115611c5f57600080fd5b80516dffffffffffffffffffffffffffff81168114611ea657600080fd5b919050565b803560ff81168114611ea657600080fd5b600060208284031215611ecd578081fd5b813561085181612e84565b600060208284031215611ee9578081fd5b815161085181612e84565b60008060008060008060008060a0898b031215611f0f578384fd5b8835611f1a81612e84565b97506020890135611f2a81612e84565b9650604089013567ffffffffffffffff80821115611f46578586fd5b611f528c838d01611e06565b909850965060608b0135915080821115611f6a578586fd5b611f768c838d01611e06565b909650945060808b0135915080821115611f8e578384fd5b50611f9b8b828c01611e48565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611fc7578182fd5b8635611fd281612e84565b95506020870135611fe281612e84565b94506040870135935060608701359250608087013567ffffffffffffffff81111561200b578283fd5b61201789828a01611e48565b979a9699509497509295939492505050565b60008060006060848603121561203d578283fd5b833561204881612e84565b925060208401359150604084013561205f81612e84565b809150509250925092565b600080600080600080600060c0888a031215612084578283fd5b873561208f81612e84565b96506020880135955060408801356120a681612e84565b945060608801356120b681612e84565b935060808801356120c681612e84565b925060a088013567ffffffffffffffff8111156120e1578283fd5b6120ed8a828b01611e48565b989b979a50959850939692959293505050565b600080600060608486031215612114578081fd5b833561211f81612e84565b95602085013595506040909401359392505050565b60008060008060008060c0878903121561214c578384fd5b863561215781612e84565b9550602087013594506040870135935060608701359250608087013561217c81612e84565b8092505060a087013590509295509295509295565b6000806000806000806000806000806101408b8d0312156121b0578384fd5b8a356121bb81612e84565b995060208b0135985060408b0135975060608b0135965060808b01356121e081612e84565b955060a08b0135945060c08b01356121f781612e9c565b935061220560e08c01611eab565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600080600080600080600060e0888a031215612240578081fd5b873561224b81612e84565b96506020880135955060408801359450606088013593506080880135925060a088013561227781612e84565b8092505060c0880135905092959891949750929550565b60006020828403121561229f578081fd5b815161085181612e9c565b6000806000606084860312156122be578081fd5b6122c784611e88565b92506122d560208501611e88565b9150604084015163ffffffff8116811461205f578182fd5b6000602082840312156122fe578081fd5b5035919050565b600060208284031215612316578081fd5b5051919050565b6000806040838503121561232f578182fd5b82519150602083015161234181612e84565b809150509250929050565b6000806040838503121561235e578182fd5b82359150602083013567ffffffffffffffff81111561237b578182fd5b61238785828601611d7b565b9150509250929050565b600080600080608085870312156123a6578182fd5b84359350602085013567ffffffffffffffff8111156123c3578283fd5b6123cf87828801611d7b565b93505060408501356123e081612e84565b9396929550929360600135925050565b60008060408385031215612402578182fd5b8235915060208084013567ffffffffffffffff80821115612421578384fd5b818601915086601f830112612434578384fd5b81358181111561244657612446612e6e565b61245884601f19601f84011601612c7a565b9150808252878482850101111561246d578485fd5b8084840185840137810190920192909252919491935090915050565b6000806040838503121561249b578182fd5b50508035926020909101359150565b600080600080600060a086880312156124c1578283fd5b8535945060208601359350604086013567ffffffffffffffff8111156124e5578384fd5b6124f188828901611d7b565b935050606086013561250281612e84565b949793965091946080013592915050565b600080600060608486031215612527578081fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215612555578283fd5b853594506020860135935060408601359250606086013561250281612e84565b60008060008060008060008060006101208a8c031215612593578283fd5b8935985060208a0135975060408a0135965060608a01356125b381612e84565b955060808a0135945060a08a01356125ca81612e9c565b93506125d860c08b01611eab565b925060e08a013591506101008a013590509295985092959850929598565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b818110156126505760208186018101518583015201612636565b8181111561265e5782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006001600160a01b03808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c084013781830160c090810191909152601f909201601f1916010195945050505050565b6001600160a01b039390931683529015156020830152604082015260600190565b6001600160a01b0394909416845291151560208401526040830152606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b6020808252825182820181905260009190848201906040850190845b8181101561284d57835183529284019291840191600101612831565b50909695505050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4f555460408201527f5055545f414d4f554e5400000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a20494e56414c49445f5041544800000000604082015260600190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4f6e6c79204574684974656d2063616e2073656e642045544820746f2074686960408201527f7320636f6e747261637400000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715612c9c57612c9c612e6e565b604052919050565b60008219821115612cb757612cb7612e58565b500190565b600082612cd757634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611612cee5750612d19565b818704821115612d0057612d00612e58565b80861615612d0d57918102915b9490941c938002612cdf565b94509492505050565b6000610c306000198484600082612d3b57506001610851565b81612d4857506000610851565b8160018114612d5e5760028114612d6857612d95565b6001915050610851565b60ff841115612d7957612d79612e58565b6001841b915084821115612d8f57612d8f612e58565b50610851565b5060208310610133831016604e8410600b8410161715612dc8575081810a83811115612dc357612dc3612e58565b610851565b612dd58484846001612cdc565b808604821115612de757612de7612e58565b02949350505050565b6000816000190483118215151615612e0a57612e0a612e58565b500290565b600082821015612e2157612e21612e58565b500390565b600081612e3557612e35612e58565b506000190190565b6000600019821415612e5157612e51612e58565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612e9957600080fd5b50565b8015158114612e9957600080fdfea2646970667358221220fc1b0cdaff85fc1884e984debbd69766206f3aea4539dcd9f940d89c5ad1fc5664736f6c63430008000033",
      "srcmap": "1028:13465:3:-:0;;;1453:712;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1734:7;:41;;-1:-1:-1;;;;;;1734:41:3;;;-1:-1:-1;;;;;1734:41:3;;;;;;;1785:11;:40;;;;;;;;;;;;;;1835:12;:51;;;;;;;;;;;;;;1935:31;;;;;;;;;;;;;;;;;;1925:42;1896:18;:72;-1:-1:-1;1978:46:3;;;;;;;;;;;;;;2034:14;:38;;;;;;;;;;;;;-1:-1:-1;2082:42:3;;;;;;;;;;;;;-1:-1:-1;2134:24:3;;;;;;;;;;;;;1028:13465;;14:179:38;95:13;;-1:-1:-1;;;;;137:31:38;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:746::-;;;;;;;;423:3;411:9;402:7;398:23;394:33;391:2;;;445:6;437;430:22;391:2;473:42;505:9;473:42;:::i;:::-;463:52;;534:51;581:2;570:9;566:18;534:51;:::i;:::-;524:61;;604:51;651:2;640:9;636:18;604:51;:::i;:::-;594:61;;674:51;721:2;710:9;706:18;674:51;:::i;:::-;664:61;;744:52;791:3;780:9;776:19;744:52;:::i;:::-;734:62;;815:52;862:3;851:9;847:19;815:52;:::i;:::-;805:62;;886:52;933:3;922:9;918:19;886:52;:::i;:::-;876:62;;381:563;;;;;;;;;;:::o;:::-;1028:13465:3;;;;;;",
      "srcmap-runtime": "1028:13465:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4403:12;;-1:-1:-1;;;;;4403:12:3;4381:10;:35;4373:90;;;;-1:-1:-1;;;4373:90:3;;;;;;;:::i;:::-;;;;;;;;;1028:13465;;;;;2715:141;;;;;;;;;;-1:-1:-1;2715:141:3;;;;;:::i;:::-;;:::i;11016:242::-;;;;;;;;;;-1:-1:-1;11016:242:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7602:342;;;;;;;;;;-1:-1:-1;7602:342:3;;;;;:::i;:::-;;:::i;3337:249::-;;;;;;;;;;-1:-1:-1;3337:249:3;;;;;:::i;:::-;;:::i;10205:221::-;;;;;;;;;;-1:-1:-1;10205:221:3;;;;;:::i;:::-;;:::i;1314:44::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13656:835::-;;;;;;;;;;-1:-1:-1;13656:835:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;11759:242::-;;;;;;;;;;-1:-1:-1;11759:242:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2310:127::-;;;;;;;;;;-1:-1:-1;2310:127:3;;;;;:::i;:::-;;:::i;1141:31::-;;;;;;;;;;;;;:::i;9239:259::-;;;;;;;;;;-1:-1:-1;9239:259:3;;;;;:::i;:::-;;:::i;8282:261::-;;;;;;;;;;-1:-1:-1;8282:261:3;;;;;:::i;:::-;;:::i;12125:591::-;;;;;;;;;;-1:-1:-1;12125:591:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;1094:40::-;;;;;;;;;;;;;:::i;1178:38::-;;;;;;;;;;;;;:::i;2589:120::-;;;;;;;;;;-1:-1:-1;2589:120:3;;;;;:::i;:::-;;:::i;7950:322::-;;;;;;;;;;-1:-1:-1;7950:322:3;;;;;:::i;:::-;;:::i;12827:696::-;;;;;;;;;;-1:-1:-1;12827:696:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;3082:117::-;;;;;;;;;;-1:-1:-1;3082:117:3;;;;;:::i;:::-;;:::i;9769:203::-;;;;;;:::i;:::-;;:::i;11264:241::-;;;;;;;;;;-1:-1:-1;11264:241:3;;;;;:::i;:::-;;:::i;5975:431::-;;;;;;;;;;-1:-1:-1;5975:431:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2862:99::-;;;;;;;;;;-1:-1:-1;2862:99:3;;;;;:::i;:::-;;:::i;3205:126::-;;;;;;;;;;-1:-1:-1;3205:126:3;;;;;:::i;:::-;;:::i;2967:109::-;;;;;;;;;;-1:-1:-1;2967:109:3;;;;;:::i;:::-;;:::i;10792:218::-;;;;;;;;;;-1:-1:-1;10792:218:3;;;;;:::i;:::-;;:::i;3923:193::-;;;;;;;;;;-1:-1:-1;3923:193:3;;;;;:::i;:::-;;:::i;3592:188::-;;;;;;;;;;-1:-1:-1;3592:188:3;;;;;:::i;:::-;;:::i;6412:395::-;;;;;;:::i;:::-;;:::i;5494:217::-;;;;;;;;;;-1:-1:-1;5494:217:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1404:42::-;;;;;;;;;;;;;:::i;1269:39::-;;;;;;;;;;;;;:::i;1222:40::-;;;;;;;;;;;;;:::i;2171:133::-;;;;;;;;;;-1:-1:-1;2171:133:3;;;;;:::i;:::-;;:::i;11511:242::-;;;;;;;;;;-1:-1:-1;11511:242:3;;;;;:::i;:::-;;:::i;2443:140::-;;;;;;;;;;-1:-1:-1;2443:140:3;;;;;:::i;:::-;;:::i;7366:230::-;;;;;;;;;;-1:-1:-1;7366:230:3;;;;;:::i;:::-;;:::i;4879:609::-;;;;;;;;;;-1:-1:-1;4879:609:3;;;;;:::i;:::-;;:::i;3786:99::-;;;;;;;;;;-1:-1:-1;3786:99:3;;;;;:::i;:::-;;:::i;1364:34::-;;;;;;;;;;;;;:::i;2715:141::-;2809:18:::1;:40:::0;2715:141::o;11016:242::-;11155:17;11191:60;11219:8;11229:9;11240:10;11191:27;:60::i;:::-;11184:67;;11016:242;;;;;;:::o;7602:342::-;7920:16;;7910:27;;-1:-1:-1;;;;;7920:16:3;7910:9;:27::i;:::-;7602:342;;;;;;;;;;:::o;3337:249::-;3472:7:::1;::::0;3537:11:::1;::::0;-1:-1:-1;;;;;3472:7:3;;::::1;::::0;:15:::1;::::0;3488:69:::1;::::0;3472:7;;3537:11:::1;3551:5:::0;3488:22:::1;:69::i;:::-;3559:10;3571:7;3472:107;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3337:249:::0;;;:::o;10205:221::-;10411:7;;10401:18;;-1:-1:-1;;;;;10411:7:3;10401:9;:18::i;:::-;10205:221;;;;;:::o;1314:44::-;;;-1:-1:-1;;;;;1314:44:3;;:::o;13656:835::-;13864:21;13895:15;13935:67;13967:5;13974:4;13988;13995:6;13935:31;:67::i;:::-;14025:47;;;;;14075:6;;-1:-1:-1;;;;;14025:23:3;;;;;:47;;14057:4;;14064:7;;14025:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;14021:136;;;14097:49;;;;;-1:-1:-1;;;;;14097:21:3;;;;;:49;;14119:7;;-1:-1:-1;;14128:17:3;14097:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14021:136;14214:44;;;;;14175:7;;-1:-1:-1;;;;;14214:29:3;;;;;:44;;14244:5;;14251:6;;14214:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14192:66;;;;;;;;14285:7;-1:-1:-1;;;;;14269:41:3;;14332:4;14351:8;14373:2;14434:5;-1:-1:-1;;;;;14423:26:3;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14418:33;;:2;:33;:::i;:::-;14411:41;;:2;:41;:::i;:::-;14402:50;;:6;:50;:::i;:::-;14389:63;;;14466:7;;14269:214;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13656:835;;;;;;;;;;;:::o;11759:242::-;11968:7;;11885:24;;11932:62;;-1:-1:-1;;;;;11968:7:3;11978:9;11989:4;11932:27;:62::i;:::-;11925:69;;11759:242;;;;;:::o;2310:127::-;2394:11:::1;:36:::0;;;::::1;-1:-1:-1::0;;;;;2394:36:3;;;::::1;::::0;;;::::1;::::0;;2310:127::o;1141:31::-;;;-1:-1:-1;;;;;1141:31:3;;:::o;9239:259::-;9483:7;;9437:24;;9473:18;;-1:-1:-1;;;;;9483:7:3;9473:9;:18::i;:::-;9239:259;;;;;;;:::o;8282:261::-;8519:16;;8509:27;;-1:-1:-1;;;;;8519:16:3;8509:9;:27::i;:::-;8282:261;;;;;;:::o;12125:591::-;12234:18;;;-1:-1:-1;;;;;12335:19:3;;12331:379;;-1:-1:-1;12386:1:3;;-1:-1:-1;12386:1:3;;-1:-1:-1;12386:1:3;12370:29;;12331:379;12465:5;-1:-1:-1;;;;;12434:51:3;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12434:53:3;;;;;;;;-1:-1:-1;;12434:53:3;;;;;;;;;;;;:::i;:::-;;;12430:270;;-1:-1:-1;12672:1:3;;-1:-1:-1;12672:1:3;;-1:-1:-1;12672:1:3;12656:29;;12430:270;12546:13;12561:4;12598:5;-1:-1:-1;;;;;12567:46:3;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12538:78;;;;;;;12430:270;12125:591;;;;;:::o;1094:40::-;;;-1:-1:-1;;;;;1094:40:3;;:::o;1178:38::-;;;-1:-1:-1;;;;;1178:38:3;;:::o;2589:120::-;2665:7:::1;:37:::0;;;::::1;-1:-1:-1::0;;;;;2665:37:3;;;::::1;::::0;;;::::1;::::0;;2589:120::o;7950:322::-;8248:16;;8238:27;;-1:-1:-1;;;;;8248:16:3;8238:9;:27::i;:::-;7950:322;;;;;;;;;:::o;12827:696::-;12939:18;12971:11;12996:14;13024:16;13065:12;13119:16;13129:5;13119:9;:16::i;:::-;13087:48;;-1:-1:-1;13087:48:3;;-1:-1:-1;13087:48:3;-1:-1:-1;13087:48:3;13154:363;;13198:1;13202:5;13209:1;13212;13182:32;;;;;;;;;;;13154:363;13267:10;-1:-1:-1;;;;;13257:30:3;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13257:32:3;;;;;;;;-1:-1:-1;;13257:32:3;;;;;;;;;;;;:::i;:::-;;;13253:254;;13476:1;13480:5;13487:1;13490;13460:32;;;;;;;;;;;13253:254;13343:10;13355:4;13392:5;-1:-1:-1;;;;;13361:46:3;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13335:85;;-1:-1:-1;13335:85:3;-1:-1:-1;13335:85:3;-1:-1:-1;13411:8:3;-1:-1:-1;;12827:696:3;;;;;;:::o;3082:117::-;3165:16:::1;:27:::0;;;::::1;-1:-1:-1::0;;;;;3165:27:3;;;::::1;::::0;;;::::1;::::0;;3082:117::o;9769:203::-;9957:7;;9947:18;;-1:-1:-1;;;;;9957:7:3;9947:9;:18::i;:::-;9769:203;;;;:::o;11264:241::-;11403:16;11438:60;11465:9;11476;11487:10;11438:26;:60::i;5975:431::-;6384:14;;6274:15;;;;;;6374:25;;-1:-1:-1;;;;;6384:14:3;6374:9;:25::i;:::-;5975:431;;;;;;;;;;;:::o;2862:99::-;2936:7:::1;:18:::0;;;::::1;-1:-1:-1::0;;;;;2936:18:3;;;::::1;::::0;;;::::1;::::0;;2862:99::o;3205:126::-;3282:7:::1;::::0;;:42:::1;::::0;;;;-1:-1:-1;;;;;3282:7:3;;::::1;::::0;:25:::1;::::0;:42:::1;::::0;3308:15;;3282:42:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;2967:109:::0;3046:14:::1;:23:::0;;;::::1;-1:-1:-1::0;;;;;3046:23:3;;;::::1;::::0;;;::::1;::::0;;2967:109::o;10792:218::-;10920:15;10954:49;10975:7;10984:8;10994;10954:20;:49::i;3923:193::-;4057:52:::1;4085:5;4092:8;4102:6;4057:27;:52::i;:::-;3923:193:::0;;;:::o;3592:188::-;3689:7:::1;::::0;;:40:::1;::::0;;;;-1:-1:-1;;;;;3689:7:3;;::::1;::::0;:28:::1;::::0;:40:::1;::::0;3718:10;;3689:40:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3739:7:3::1;::::0;;:34:::1;::::0;;;;-1:-1:-1;;;;;3739:7:3;;::::1;::::0;-1:-1:-1;3739:25:3::1;::::0;-1:-1:-1;3739:34:3::1;::::0;3765:7;;3739:34:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;6412:395:::0;6785:14;;6669:19;;;;;;6775:25;;-1:-1:-1;;;;;6785:14:3;6775:9;:25::i;:::-;6412:395;;;;;;;;;:::o;5494:217::-;5678:6;5696:8;;;1404:42;;;;:::o;1269:39::-;;;-1:-1:-1;;;;;1269:39:3;;:::o;1222:40::-;;;-1:-1:-1;;;;;1222:40:3;;:::o;2171:133::-;2255:11:::1;:42:::0;;;::::1;-1:-1:-1::0;;;;;2255:42:3;;;::::1;::::0;;;::::1;::::0;;2171:133::o;11511:242::-;11721:7;;11637:24;;11684:62;;-1:-1:-1;;;;;11721:7:3;11731:8;11741:4;11684:28;:62::i;2443:140::-;2529:12:::1;:47:::0;;;::::1;-1:-1:-1::0;;;;;2529:47:3;;;::::1;::::0;;;::::1;::::0;;2443:140::o;7366:230::-;7572:16;;7562:27;;-1:-1:-1;;;;;7572:16:3;7562:9;:27::i;4879:609::-;5039:6;;5081:37;;;;5092:7;5081:37;:::i;:::-;5057:61;;;5132:9;5145:1;5132:14;5128:305;;;5203:14;;5193:25;;-1:-1:-1;;;;;5203:14:3;5193:9;:25::i;:::-;5128:305;;;5239:9;5252:1;5239:14;:32;;;;5257:9;5270:1;5257:14;5239:32;:50;;;;5275:9;5288:1;5275:14;5239:50;:68;;;;5293:9;5306:1;5293:14;5239:68;5235:198;;;5364:7;;5354:18;;-1:-1:-1;;;;;5364:7:3;5354:9;:18::i;5235:198::-;-1:-1:-1;5450:31:3;;4879:609;-1:-1:-1;;;;;;;4879:609:3:o;3786:99::-;3855:7:::1;::::0;;:23:::1;::::0;;;;-1:-1:-1;;;;;3855:7:3;;::::1;::::0;:16:::1;::::0;:23:::1;::::0;3872:5;;3855:23:::1;;:::i;1364:34::-:0;;;-1:-1:-1;;;;;1364:34:3;;:::o;2540:557:32:-;2672:17;2720:1;2709:8;:12;2701:66;;;;-1:-1:-1;;;2701:66:32;;;;;;;:::i;:::-;2797:1;2785:9;:13;:31;;;;;2815:1;2802:10;:14;2785:31;2777:82;;;;-1:-1:-1;;;2777:82:32;;;;;;;:::i;:::-;2869:23;2895:17;:8;2908:3;2895:12;:17::i;:::-;2869:43;-1:-1:-1;2922:17:32;2942:31;2869:43;2962:10;2942:19;:31::i;:::-;2922:51;-1:-1:-1;2983:19:32;3005:40;3029:15;3005:19;:9;3019:4;3005:13;:19::i;:::-;:23;;:40::i;:::-;2983:62;-1:-1:-1;3067:23:32;2983:62;3067:9;:23;:::i;:::-;3055:35;2540:557;-1:-1:-1;;;;;;;2540:557:32:o;534:490:3:-;646:14;643:1;640;627:34;746:1;743;727:14;724:1;708:14;701:5;688:60;782:16;779:1;776;761:38;819:6;842:74;;;;973:16;970:1;963:27;842:74;881:16;878:1;871:27;764:708:32;883:12;908:14;924;942:26;953:6;961;942:10;:26::i;:::-;907:61;;;;1178:7;1242:6;1250;1225:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1215:43;;;;;;1095:306;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1095:306:32;;;;;;;;;1060:363;;1095:306;1060:363;;;;;764:708;-1:-1:-1;;;;;;764:708:32:o;1001:439:36:-;1219:12;1233:17;1254:5;-1:-1:-1;;;;;1254:10:36;1288;1300:4;1306:2;1310:5;1265:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1254:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:99;;;;1335:7;:57;;;;-1:-1:-1;1347:11:36;;:16;;:44;;;1378:4;1367:24;;;;;;;;;;;;:::i;:::-;1327:106;;;;-1:-1:-1;;;1327:106:36;;;;;;;:::i;4431:570:32:-;4565:24;4624:1;4609:4;:11;:16;;4601:57;;;;-1:-1:-1;;;4601:57:32;;;;;;;:::i;:::-;4692:4;:11;4678:26;;;;;;-1:-1:-1;;;4678:26:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4678:26:32;;4668:36;;4744:9;4714:7;4739:1;4722:7;:14;:18;;;;:::i;:::-;4714:27;;;;;;-1:-1:-1;;;4714:27:32;;;;;;;;;;;;;;:39;;;;;4768:9;4794:1;4780:4;:11;:15;;;;:::i;:::-;4768:27;;4763:232;4797:5;;4763:232;;4824:17;;4865:42;4877:7;4886:4;4891:5;4895:1;4891;:5;:::i;:::-;4886:11;;;;;;-1:-1:-1;;;4886:11:32;;;;;;;;;;;;;;;4899:4;4904:1;4899:7;;;;;;-1:-1:-1;;;4899:7:32;;;;;;;;;;;;;;;4865:11;:42::i;:::-;4823:84;;;;4938:46;4950:7;4958:1;4950:10;;;;;;-1:-1:-1;;;4950:10:32;;;;;;;;;;;;;;;4962:9;4973:10;4938:11;:46::i;:::-;4921:7;4929:5;4933:1;4929;:5;:::i;:::-;4921:14;;;;;;-1:-1:-1;;;4921:14:32;;;;;;;;;;;;;;:63;;;;;4763:232;;4804:3;;;;;:::i;:::-;;;;4763:232;;;;4431:570;;;;;:::o;3215:510::-;3347:16;3395:1;3383:9;:13;3375:68;;;;-1:-1:-1;;;3375:68:32;;;;;;;:::i;:::-;3473:1;3461:9;:13;:31;;;;;3491:1;3478:10;:14;3461:31;3453:82;;;;-1:-1:-1;;;3453:82:32;;;;;;;:::i;:::-;3545:17;3565:34;3594:4;3565:24;:9;3579;3565:13;:24::i;:::-;:28;;:34::i;:::-;3545:54;-1:-1:-1;3609:19:32;3631:34;3661:3;3631:25;:10;3646:9;3631:14;:25::i;:34::-;3609:56;-1:-1:-1;3686:32:32;3716:1;3687:23;3609:56;3687:9;:23;:::i;3686:32::-;3675:43;3215:510;-1:-1:-1;;;;;;3215:510:32:o;2066:355::-;2187:15;2232:1;2222:7;:11;2214:59;;;;-1:-1:-1;;;2214:59:32;;;;;;;:::i;:::-;2302:1;2291:8;:12;:28;;;;;2318:1;2307:8;:12;2291:28;2283:79;;;;-1:-1:-1;;;2283:79:32;;;;;;;:::i;:::-;2406:8;2382:21;:7;2394:8;2382:11;:21::i;:::-;:32;;;;:::i;605:390:36:-;785:12;799:17;820:5;-1:-1:-1;;;;;820:10:36;854;866:2;870:5;831:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:93;;;;895:7;:57;;;;-1:-1:-1;907:11:36;;:16;;:44;;;938:4;927:24;;;;;;;;;;;;:::i;:::-;887:101;;;;-1:-1:-1;;;887:101:36;;;;;;;:::i;3804:549:32:-;3938:24;3997:1;3982:4;:11;:16;;3974:57;;;;-1:-1:-1;;;3974:57:32;;;;;;;:::i;:::-;4065:4;:11;4051:26;;;;;;-1:-1:-1;;;4051:26:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4051:26:32;;4041:36;;4100:8;4087:7;4095:1;4087:10;;;;;;-1:-1:-1;;;4087:10:32;;;;;;;;;;;;;;:21;;;;;4123:9;4118:229;4152:1;4138:4;:11;:15;;;;:::i;:::-;4134:1;:19;4118:229;;;4175:17;4194:18;4216:42;4228:7;4237:4;4242:1;4237:7;;;;;;-1:-1:-1;;;4237:7:32;;;;;;;;;;;;;;;4246:4;4251:1;4255;4251:5;;;;:::i;:::-;4246:11;;;;;;-1:-1:-1;;;4246:11:32;;;;;;;;4216:42;4174:84;;;;4289:47;4302:7;4310:1;4302:10;;;;;;-1:-1:-1;;;4302:10:32;;;;;;;;;;;;;;;4314:9;4325:10;4289:12;:47::i;:::-;4272:7;4280:5;:1;4284;4280:5;:::i;:::-;4272:14;;;;;;-1:-1:-1;;;4272:14:32;;;;;;;;;;;;;;:64;;;;;4118:229;;4155:3;;;;;:::i;:::-;;;;4118:229;;458:140:35;510:6;536;;;:30;;-1:-1:-1;565:1:35;560;551:5;560:1;565;551:5;:::i;:::-;547:9;-1:-1:-1;546:15:35;;547:9;546:15;:::i;:::-;:20;536:30;528:63;;;;-1:-1:-1;;;528:63:35;;;;;;;:::i;193:126::-;245:6;286:1;276:5;280:1;286;276:5;:::i;:::-;272:9;;;271:16;;263:49;;;;-1:-1:-1;;;263:49:35;;;;;;;:::i;334:341:32:-;409:14;425;469:6;-1:-1:-1;;;;;459:16:32;:6;-1:-1:-1;;;;;459:16:32;;;451:64;;;;-1:-1:-1;;;451:64:32;;;;;;;:::i;:::-;553:6;-1:-1:-1;;;;;544:15:32;:6;-1:-1:-1;;;;;544:15:32;;:53;;582:6;590;544:53;;;563:6;571;544:53;525:72;;-1:-1:-1;525:72:32;-1:-1:-1;;;;;;615:20:32;;607:61;;;;-1:-1:-1;;;607:61:32;;;;;;;:::i;:::-;334:341;;;;;:::o;1527:429::-;1650:16;1668;1697:14;1717:26;1728:6;1736;1717:10;:26::i;:::-;1696:47;;;1754:16;1772;1807:32;1815:7;1824:6;1832;1807:7;:32::i;:::-;-1:-1:-1;;;;;1794:58:32;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1753:101;;;;;;;;;1897:6;-1:-1:-1;;;;;1887:16:32;:6;-1:-1:-1;;;;;1887:16:32;;:62;;1930:8;1940;1887:62;;;1907:8;1917;1887:62;1864:85;;;;-1:-1:-1;1527:429:32;-1:-1:-1;;;;;;;1527:429:32:o;325:127:35:-;377:6;418:1;408:5;412:1;418;408:5;:::i;:::-;404:9;;;403:16;;395:50;;;;-1:-1:-1;;;395:50:35;;;;;;;:::i;14:826:38:-;;127:3;120:4;112:6;108:17;104:27;94:2;;149:5;142;135:20;94:2;189:6;176:20;215:4;238:18;234:2;231:26;228:2;;;260:18;;:::i;:::-;307:2;303;299:11;330:27;353:2;349;345:11;330:27;:::i;:::-;391:15;;;422:12;;;;454:15;;;488;;;484:24;;481:33;-1:-1:-1;478:2:38;;;531:5;524;517:20;478:2;557:5;548:14;;571:240;585:2;582:1;579:9;571:240;;;656:3;643:17;673:33;700:5;673:33;:::i;:::-;719:18;;603:1;596:9;;;;;757:12;;;;789;;571:240;;;-1:-1:-1;829:5:38;84:756;-1:-1:-1;;;;;;;84:756:38:o;845:404::-;;;978:3;971:4;963:6;959:17;955:27;945:2;;1003:8;993;986:26;945:2;-1:-1:-1;1033:20:38;;1076:18;1065:30;;1062:2;;;1115:8;1105;1098:26;1062:2;1159:4;1151:6;1147:17;1135:29;;1222:3;1215:4;1207;1199:6;1195:17;1187:6;1183:30;1179:41;1176:50;1173:2;;;1239:1;1236;1229:12;1254:377;;;1371:3;1364:4;1356:6;1352:17;1348:27;1338:2;;1396:8;1386;1379:26;1338:2;-1:-1:-1;1426:20:38;;1469:18;1458:30;;1455:2;;;1508:8;1498;1491:26;1455:2;1552:4;1544:6;1540:17;1528:29;;1604:3;1597:4;1588:6;1580;1576:19;1572:30;1569:39;1566:2;;;1621:1;1618;1611:12;1636:190;1717:13;;1770:30;1759:42;;1749:53;;1739:2;;1816:1;1813;1806:12;1739:2;1698:128;;;:::o;1831:158::-;1899:20;;1959:4;1948:16;;1938:27;;1928:2;;1979:1;1976;1969:12;1994:259;;2106:2;2094:9;2085:7;2081:23;2077:32;2074:2;;;2127:6;2119;2112:22;2074:2;2171:9;2158:23;2190:33;2217:5;2190:33;:::i;2258:263::-;;2381:2;2369:9;2360:7;2356:23;2352:32;2349:2;;;2402:6;2394;2387:22;2349:2;2439:9;2433:16;2458:33;2485:5;2458:33;:::i;2526:1396::-;;;;;;;;;2795:3;2783:9;2774:7;2770:23;2766:33;2763:2;;;2817:6;2809;2802:22;2763:2;2861:9;2848:23;2880:33;2907:5;2880:33;:::i;:::-;2932:5;-1:-1:-1;2989:2:38;2974:18;;2961:32;3002:35;2961:32;3002:35;:::i;:::-;3056:7;-1:-1:-1;3114:2:38;3099:18;;3086:32;3137:18;3167:14;;;3164:2;;;3199:6;3191;3184:22;3164:2;3243:76;3311:7;3302:6;3291:9;3287:22;3243:76;:::i;:::-;3338:8;;-1:-1:-1;3217:102:38;-1:-1:-1;3426:2:38;3411:18;;3398:32;;-1:-1:-1;3442:16:38;;;3439:2;;;3476:6;3468;3461:22;3439:2;3520:78;3590:7;3579:8;3568:9;3564:24;3520:78;:::i;:::-;3617:8;;-1:-1:-1;3494:104:38;-1:-1:-1;3705:3:38;3690:19;;3677:33;;-1:-1:-1;3722:16:38;;;3719:2;;;3756:6;3748;3741:22;3719:2;;3800:62;3854:7;3843:8;3832:9;3828:24;3800:62;:::i;:::-;2753:1169;;;;-1:-1:-1;2753:1169:38;;-1:-1:-1;2753:1169:38;;;;;;3881:8;-1:-1:-1;;;2753:1169:38:o;3927:849::-;;;;;;;4126:3;4114:9;4105:7;4101:23;4097:33;4094:2;;;4148:6;4140;4133:22;4094:2;4192:9;4179:23;4211:33;4238:5;4211:33;:::i;:::-;4263:5;-1:-1:-1;4320:2:38;4305:18;;4292:32;4333:35;4292:32;4333:35;:::i;:::-;4387:7;-1:-1:-1;4441:2:38;4426:18;;4413:32;;-1:-1:-1;4492:2:38;4477:18;;4464:32;;-1:-1:-1;4547:3:38;4532:19;;4519:33;4575:18;4564:30;;4561:2;;;4612:6;4604;4597:22;4561:2;4656:60;4708:7;4699:6;4688:9;4684:22;4656:60;:::i;:::-;4084:692;;;;-1:-1:-1;4084:692:38;;-1:-1:-1;4084:692:38;;4735:8;;4084:692;-1:-1:-1;;;4084:692:38:o;4781:470::-;;;;4927:2;4915:9;4906:7;4902:23;4898:32;4895:2;;;4948:6;4940;4933:22;4895:2;4992:9;4979:23;5011:33;5038:5;5011:33;:::i;:::-;5063:5;-1:-1:-1;5115:2:38;5100:18;;5087:32;;-1:-1:-1;5171:2:38;5156:18;;5143:32;5184:35;5143:32;5184:35;:::i;:::-;5238:7;5228:17;;;4885:366;;;;;:::o;5256:1068::-;;;;;;;;5472:3;5460:9;5451:7;5447:23;5443:33;5440:2;;;5494:6;5486;5479:22;5440:2;5538:9;5525:23;5557:33;5584:5;5557:33;:::i;:::-;5609:5;-1:-1:-1;5661:2:38;5646:18;;5633:32;;-1:-1:-1;5717:2:38;5702:18;;5689:32;5730:35;5689:32;5730:35;:::i;:::-;5784:7;-1:-1:-1;5843:2:38;5828:18;;5815:32;5856:35;5815:32;5856:35;:::i;:::-;5910:7;-1:-1:-1;5969:3:38;5954:19;;5941:33;5983:35;5941:33;5983:35;:::i;:::-;6037:7;-1:-1:-1;6095:3:38;6080:19;;6067:33;6123:18;6112:30;;6109:2;;;6160:6;6152;6145:22;6109:2;6204:60;6256:7;6247:6;6236:9;6232:22;6204:60;:::i;:::-;5430:894;;;;-1:-1:-1;5430:894:38;;-1:-1:-1;5430:894:38;;;;6178:86;;-1:-1:-1;;;5430:894:38:o;6329:395::-;;;;6475:2;6463:9;6454:7;6450:23;6446:32;6443:2;;;6496:6;6488;6481:22;6443:2;6540:9;6527:23;6559:33;6586:5;6559:33;:::i;:::-;6611:5;6663:2;6648:18;;6635:32;;-1:-1:-1;6714:2:38;6699:18;;;6686:32;;6433:291;-1:-1:-1;;;6433:291:38:o;6729:677::-;;;;;;;6926:3;6914:9;6905:7;6901:23;6897:33;6894:2;;;6948:6;6940;6933:22;6894:2;6992:9;6979:23;7011:33;7038:5;7011:33;:::i;:::-;7063:5;-1:-1:-1;7115:2:38;7100:18;;7087:32;;-1:-1:-1;7166:2:38;7151:18;;7138:32;;-1:-1:-1;7217:2:38;7202:18;;7189:32;;-1:-1:-1;7273:3:38;7258:19;;7245:33;7287:35;7245:33;7287:35;:::i;:::-;7341:7;7331:17;;;7395:3;7384:9;7380:19;7367:33;7357:43;;6884:522;;;;;;;;:::o;7411:1026::-;;;;;;;;;;;7671:3;7659:9;7650:7;7646:23;7642:33;7639:2;;;7693:6;7685;7678:22;7639:2;7737:9;7724:23;7756:33;7783:5;7756:33;:::i;:::-;7808:5;-1:-1:-1;7860:2:38;7845:18;;7832:32;;-1:-1:-1;7911:2:38;7896:18;;7883:32;;-1:-1:-1;7962:2:38;7947:18;;7934:32;;-1:-1:-1;8018:3:38;8003:19;;7990:33;8032:35;7990:33;8032:35;:::i;:::-;8086:7;-1:-1:-1;8140:3:38;8125:19;;8112:33;;-1:-1:-1;8197:3:38;8182:19;;8169:33;8211:32;8169:33;8211:32;:::i;:::-;8262:7;-1:-1:-1;8288:39:38;8322:3;8307:19;;8288:39;:::i;:::-;8278:49;;8374:3;8363:9;8359:19;8346:33;8336:43;;8426:3;8415:9;8411:19;8398:33;8388:43;;7629:808;;;;;;;;;;;;;:::o;8442:746::-;;;;;;;;8656:3;8644:9;8635:7;8631:23;8627:33;8624:2;;;8678:6;8670;8663:22;8624:2;8722:9;8709:23;8741:33;8768:5;8741:33;:::i;:::-;8793:5;-1:-1:-1;8845:2:38;8830:18;;8817:32;;-1:-1:-1;8896:2:38;8881:18;;8868:32;;-1:-1:-1;8947:2:38;8932:18;;8919:32;;-1:-1:-1;8998:3:38;8983:19;;8970:33;;-1:-1:-1;9055:3:38;9040:19;;9027:33;9069:35;9027:33;9069:35;:::i;:::-;9123:7;9113:17;;;9177:3;9166:9;9162:19;9149:33;9139:43;;8614:574;;;;;;;;;;:::o;9193:257::-;;9313:2;9301:9;9292:7;9288:23;9284:32;9281:2;;;9334:6;9326;9319:22;9281:2;9371:9;9365:16;9390:30;9414:5;9390:30;:::i;9455:474::-;;;;9611:2;9599:9;9590:7;9586:23;9582:32;9579:2;;;9632:6;9624;9617:22;9579:2;9660:42;9692:9;9660:42;:::i;:::-;9650:52;;9721:51;9768:2;9757:9;9753:18;9721:51;:::i;:::-;9711:61;;9815:2;9804:9;9800:18;9794:25;9859:10;9852:5;9848:22;9841:5;9838:33;9828:2;;9890:6;9882;9875:22;9934:190;;10046:2;10034:9;10025:7;10021:23;10017:32;10014:2;;;10067:6;10059;10052:22;10014:2;-1:-1:-1;10095:23:38;;10004:120;-1:-1:-1;10004:120:38:o;10129:194::-;;10252:2;10240:9;10231:7;10227:23;10223:32;10220:2;;;10273:6;10265;10258:22;10220:2;-1:-1:-1;10301:16:38;;10210:113;-1:-1:-1;10210:113:38:o;10328:324::-;;;10468:2;10456:9;10447:7;10443:23;10439:32;10436:2;;;10489:6;10481;10474:22;10436:2;10523:9;10517:16;10507:26;;10576:2;10565:9;10561:18;10555:25;10589:33;10616:5;10589:33;:::i;:::-;10641:5;10631:15;;;10426:226;;;;;:::o;10657:442::-;;;10811:2;10799:9;10790:7;10786:23;10782:32;10779:2;;;10832:6;10824;10817:22;10779:2;10873:9;10860:23;10850:33;;10934:2;10923:9;10919:18;10906:32;10961:18;10953:6;10950:30;10947:2;;;10998:6;10990;10983:22;10947:2;11026:67;11085:7;11076:6;11065:9;11061:22;11026:67;:::i;:::-;11016:77;;;10769:330;;;;;:::o;11104:648::-;;;;;11292:3;11280:9;11271:7;11267:23;11263:33;11260:2;;;11314:6;11306;11299:22;11260:2;11355:9;11342:23;11332:33;;11416:2;11405:9;11401:18;11388:32;11443:18;11435:6;11432:30;11429:2;;;11480:6;11472;11465:22;11429:2;11508:67;11567:7;11558:6;11547:9;11543:22;11508:67;:::i;:::-;11498:77;;;11625:2;11614:9;11610:18;11597:32;11638:33;11665:5;11638:33;:::i;:::-;11250:502;;;;-1:-1:-1;11690:5:38;;11742:2;11727:18;11714:32;;-1:-1:-1;;11250:502:38:o;11757:934::-;;;11895:2;11883:9;11874:7;11870:23;11866:32;11863:2;;;11916:6;11908;11901:22;11863:2;11957:9;11944:23;11934:33;;11986:2;12039;12028:9;12024:18;12011:32;12062:18;12103:2;12095:6;12092:14;12089:2;;;12124:6;12116;12109:22;12089:2;12167:6;12156:9;12152:22;12142:32;;12212:7;12205:4;12201:2;12197:13;12193:27;12183:2;;12239:6;12231;12224:22;12183:2;12280;12267:16;12302:2;12298;12295:10;12292:2;;;12308:18;;:::i;:::-;12350:111;12457:2;-1:-1:-1;;12381:4:38;12377:2;12373:13;12369:86;12365:95;12350:111;:::i;:::-;12337:124;;12484:2;12477:5;12470:17;12524:7;12519:2;12514;12510;12506:11;12502:20;12499:33;12496:2;;;12550:6;12542;12535:22;12496:2;12610;12605;12601;12597:11;12592:2;12585:5;12581:14;12568:45;12633:14;;12629:23;;;12622:39;;;;11853:838;;12637:5;;-1:-1:-1;11853:838:38;;-1:-1:-1;;11853:838:38:o;12696:258::-;;;12825:2;12813:9;12804:7;12800:23;12796:32;12793:2;;;12846:6;12838;12831:22;12793:2;-1:-1:-1;;12874:23:38;;;12944:2;12929:18;;;12916:32;;-1:-1:-1;12783:171:38:o;12959:717::-;;;;;;13164:3;13152:9;13143:7;13139:23;13135:33;13132:2;;;13186:6;13178;13171:22;13132:2;13227:9;13214:23;13204:33;;13284:2;13273:9;13269:18;13256:32;13246:42;;13339:2;13328:9;13324:18;13311:32;13366:18;13358:6;13355:30;13352:2;;;13403:6;13395;13388:22;13352:2;13431:67;13490:7;13481:6;13470:9;13466:22;13431:67;:::i;:::-;13421:77;;;13548:2;13537:9;13533:18;13520:32;13561:33;13588:5;13561:33;:::i;:::-;13122:554;;;;-1:-1:-1;13122:554:38;;13665:3;13650:19;13637:33;;13122:554;-1:-1:-1;;13122:554:38:o;13681:326::-;;;;13827:2;13815:9;13806:7;13802:23;13798:32;13795:2;;;13848:6;13840;13833:22;13795:2;-1:-1:-1;;13876:23:38;;;13946:2;13931:18;;13918:32;;-1:-1:-1;13997:2:38;13982:18;;;13969:32;;13785:222;-1:-1:-1;13785:222:38:o;14012:533::-;;;;;;14192:3;14180:9;14171:7;14167:23;14163:33;14160:2;;;14214:6;14206;14199:22;14160:2;14255:9;14242:23;14232:33;;14312:2;14301:9;14297:18;14284:32;14274:42;;14363:2;14352:9;14348:18;14335:32;14325:42;;14417:2;14406:9;14402:18;14389:32;14430:33;14457:5;14430:33;:::i;14550:882::-;;;;;;;;;;14793:3;14781:9;14772:7;14768:23;14764:33;14761:2;;;14815:6;14807;14800:22;14761:2;14856:9;14843:23;14833:33;;14913:2;14902:9;14898:18;14885:32;14875:42;;14964:2;14953:9;14949:18;14936:32;14926:42;;15018:2;15007:9;15003:18;14990:32;15031:33;15058:5;15031:33;:::i;:::-;15083:5;-1:-1:-1;15135:3:38;15120:19;;15107:33;;-1:-1:-1;15192:3:38;15177:19;;15164:33;15206:32;15164:33;15206:32;:::i;:::-;15257:7;-1:-1:-1;15283:39:38;15317:3;15302:19;;15283:39;:::i;:::-;15273:49;;15369:3;15358:9;15354:19;15341:33;15331:43;;15421:3;15410:9;15406:19;15393:33;15383:43;;14751:681;;;;;;;;;;;:::o;15437:368::-;15604:66;15699:2;15695:15;;;15691:24;;15679:37;;15750:15;;;;15746:24;15741:2;15732:12;;15725:46;15796:2;15787:12;;15584:221::o;15810:430::-;;15977:6;15971:13;16002:3;16014:129;16028:6;16025:1;16022:13;16014:129;;;16126:4;16110:14;;;16106:25;;16100:32;16087:11;;;16080:53;16043:12;16014:129;;;16161:6;16158:1;16155:13;16152:2;;;16196:3;16187:6;16182:3;16178:16;16171:29;16152:2;-1:-1:-1;16218:16:38;;;;;15947:293;-1:-1:-1;;15947:293:38:o;16245:724::-;16616:66;16604:79;;16720:2;16716:15;;;;16733:66;16712:88;16708:1;16699:11;;16692:109;16826:2;16817:12;;16810:28;16868:66;16863:2;16854:12;;16847:88;16960:2;16951:12;;16594:375::o;16974:226::-;-1:-1:-1;;;;;17138:55:38;;;;17120:74;;17108:2;17093:18;;17075:125::o;17205:327::-;-1:-1:-1;;;;;17458:15:38;;;17440:34;;17510:15;;17505:2;17490:18;;17483:43;17367:2;17352:18;;17334:198::o;17537:398::-;-1:-1:-1;;;;;17818:15:38;;;17800:34;;17870:15;;;;17865:2;17850:18;;17843:43;17917:2;17902:18;;17895:34;;;;17727:2;17712:18;;17694:241::o;17940:819::-;;-1:-1:-1;;;;;18282:2:38;18274:6;18270:15;18259:9;18252:34;18334:2;18326:6;18322:15;18317:2;18306:9;18302:18;18295:43;;18374:6;18369:2;18358:9;18354:18;18347:34;18417:6;18412:2;18401:9;18397:18;18390:34;18461:3;18455;18444:9;18440:19;18433:32;18502:6;18496:3;18485:9;18481:19;18474:35;18560:6;18552;18546:3;18535:9;18531:19;18518:49;18587:22;;;18611:3;18583:32;;;18576:46;;;;18674:2;18662:15;;;-1:-1:-1;;18658:88:38;18643:104;18639:114;;18181:578;-1:-1:-1;;;;;18181:578:38:o;18764:378::-;-1:-1:-1;;;;;18978:55:38;;;;18960:74;;19077:14;;19070:22;19065:2;19050:18;;19043:50;19124:2;19109:18;;19102:34;18948:2;18933:18;;18915:227::o;19147:450::-;-1:-1:-1;;;;;19390:55:38;;;;19372:74;;19489:14;;19482:22;19477:2;19462:18;;19455:50;19536:2;19521:18;;19514:34;19579:2;19564:18;;19557:34;19359:3;19344:19;;19326:271::o;19602:297::-;-1:-1:-1;;;;;19794:55:38;;;;19776:74;;19881:2;19866:18;;19859:34;19764:2;19749:18;;19731:168::o;19904:368::-;-1:-1:-1;;;;;20124:55:38;;;;20106:74;;20211:2;20196:18;;20189:34;;;;20254:2;20239:18;;20232:34;20094:2;20079:18;;20061:211::o;20277:635::-;20448:2;20500:21;;;20570:13;;20473:18;;;20592:22;;;20277:635;;20448:2;20671:15;;;;20645:2;20630:18;;;20277:635;20717:169;20731:6;20728:1;20725:13;20717:169;;;20792:13;;20780:26;;20861:15;;;;20826:12;;;;20753:1;20746:9;20717:169;;;-1:-1:-1;20903:3:38;;20428:484;-1:-1:-1;;;;;;20428:484:38:o;20917:248::-;21091:66;21079:79;;;;21061:98;;21049:2;21034:18;;21016:149::o;22178:345::-;22380:2;22362:21;;;22419:2;22399:18;;;22392:30;22458:23;22453:2;22438:18;;22431:51;22514:2;22499:18;;22352:171::o;22528:355::-;22730:2;22712:21;;;22769:2;22749:18;;;22742:30;22808:33;22803:2;22788:18;;22781:61;22874:2;22859:18;;22702:181::o;22888:344::-;23090:2;23072:21;;;23129:2;23109:18;;;23102:30;23168:22;23163:2;23148:18;;23141:50;23223:2;23208:18;;23062:170::o;23237:344::-;23439:2;23421:21;;;23478:2;23458:18;;;23451:30;23517:22;23512:2;23497:18;;23490:50;23572:2;23557:18;;23411:170::o;23586:399::-;23788:2;23770:21;;;23827:2;23807:18;;;23800:30;23866:34;23861:2;23846:18;;23839:62;23937:5;23932:2;23917:18;;23910:33;23975:3;23960:19;;23760:225::o;23990:406::-;24192:2;24174:21;;;24231:2;24211:18;;;24204:30;24270:34;24265:2;24250:18;;24243:62;24341:12;24336:2;24321:18;;24314:40;24386:3;24371:19;;24164:232::o;24401:352::-;24603:2;24585:21;;;24642:2;24622:18;;;24615:30;24681;24676:2;24661:18;;24654:58;24744:2;24729:18;;24575:178::o;24758:405::-;24960:2;24942:21;;;24999:2;24979:18;;;24972:30;25038:34;25033:2;25018:18;;25011:62;25109:11;25104:2;25089:18;;25082:39;25153:3;25138:19;;24932:231::o;25168:399::-;25370:2;25352:21;;;25409:2;25389:18;;;25382:30;25448:34;25443:2;25428:18;;25421:62;25519:5;25514:2;25499:18;;25492:33;25557:3;25542:19;;25342:225::o;25572:406::-;25774:2;25756:21;;;25813:2;25793:18;;;25786:30;25852:34;25847:2;25832:18;;25825:62;25923:12;25918:2;25903:18;;25896:40;25968:3;25953:19;;25746:232::o;25983:402::-;26185:2;26167:21;;;26224:2;26204:18;;;26197:30;26263:34;26258:2;26243:18;;26236:62;26334:8;26329:2;26314:18;;26307:36;26375:3;26360:19;;26157:228::o;26390:400::-;26592:2;26574:21;;;26631:2;26611:18;;;26604:30;26670:34;26665:2;26650:18;;26643:62;26741:6;26736:2;26721:18;;26714:34;26780:3;26765:19;;26564:226::o;26795:352::-;26997:2;26979:21;;;27036:2;27016:18;;;27009:30;27075;27070:2;27055:18;;27048:58;27138:2;27123:18;;26969:178::o;27152:177::-;27298:25;;;27286:2;27271:18;;27253:76::o;27334:319::-;27536:25;;;27592:2;27577:18;;27570:34;;;;27635:2;27620:18;;27613:34;27524:2;27509:18;;27491:162::o;27658:251::-;27728:2;27722:9;27758:17;;;27805:18;27790:34;;27826:22;;;27787:62;27784:2;;;27852:18;;:::i;:::-;27888:2;27881:22;27702:207;;-1:-1:-1;27702:207:38:o;27914:128::-;;27985:1;27981:6;27978:1;27975:13;27972:2;;;27991:18;;:::i;:::-;-1:-1:-1;28027:9:38;;27962:80::o;28047:274::-;;28113:1;28103:2;;-1:-1:-1;;;28145:1:38;28138:88;28249:4;28246:1;28239:15;28277:4;28274:1;28267:15;28103:2;-1:-1:-1;28306:9:38;;28093:228::o;28326:453::-;28422:6;28445:5;28459:314;28508:1;28545:2;28535:8;28532:16;28522:2;;28552:5;;;28522:2;28593:4;28588:3;28584:14;28578:4;28575:24;28572:2;;;28602:18;;:::i;:::-;28652:2;28642:8;28638:17;28635:2;;;28667:16;;;;28635:2;28746:17;;;;;28706:15;;28459:314;;;28403:376;;;;;;;:::o;28784:199::-;;28873:104;-1:-1:-1;;28900:8:38;28894:4;28988:922;29072:8;29062:2;;-1:-1:-1;29113:1:38;29127:5;;29062:2;29161:4;29151:2;;-1:-1:-1;29198:1:38;29212:5;;29151:2;29243:4;29261:1;29256:59;;;;29329:1;29324:183;;;;29236:271;;29256:59;29286:1;29277:10;;29300:5;;;29324:183;29361:3;29351:8;29348:17;29345:2;;;29368:18;;:::i;:::-;29424:1;29414:8;29410:16;29401:25;;29452:3;29445:5;29442:14;29439:2;;;29459:18;;:::i;:::-;29492:5;;;29236:271;;29591:2;29581:8;29578:16;29572:3;29566:4;29563:13;29559:36;29553:2;29543:8;29540:16;29535:2;29529:4;29526:12;29522:35;29519:77;29516:2;;;-1:-1:-1;29628:19:38;;;29663:14;;;29660:2;;;29680:18;;:::i;:::-;29713:5;;29516:2;29760:42;29798:3;29788:8;29782:4;29779:1;29760:42;:::i;:::-;29835:6;29830:3;29826:16;29817:7;29814:29;29811:2;;;29846:18;;:::i;:::-;29884:20;;29052:858;-1:-1:-1;;;;29052:858:38:o;29915:228::-;;30081:1;-1:-1:-1;;30009:74:38;30006:1;30003:81;29998:1;29991:9;29984:17;29980:105;29977:2;;;30088:18;;:::i;:::-;-1:-1:-1;30128:9:38;;29967:176::o;30148:125::-;;30216:1;30213;30210:8;30207:2;;;30221:18;;:::i;:::-;-1:-1:-1;30258:9:38;;30197:76::o;30278:196::-;;30345:5;30335:2;;30354:18;;:::i;:::-;-1:-1:-1;;;30390:78:38;;30325:149::o;30479:195::-;;-1:-1:-1;;30542:5:38;30539:77;30536:2;;;30619:18;;:::i;:::-;-1:-1:-1;30666:1:38;30655:13;;30526:148::o;30679:184::-;-1:-1:-1;;;30728:1:38;30721:88;30828:4;30825:1;30818:15;30852:4;30849:1;30842:15;30868:184;-1:-1:-1;;;30917:1:38;30910:88;31017:4;31014:1;31007:15;31041:4;31038:1;31031:15;31057:156;-1:-1:-1;;;;;31138:5:38;31134:54;31127:5;31124:65;31114:2;;31203:1;31200;31193:12;31114:2;31104:109;:::o;31218:120::-;31306:5;31299:13;31292:21;31285:5;31282:32;31272:2;;31328:1;31325;31318:12"
    },
    "contracts/MateriaOrchestrator.sol:Proxy": {
      "abi": [],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MateriaOrchestrator.sol\":\"Proxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/MateriaOrchestrator.sol\":{\"keccak256\":\"0xf1544c63ad524034841861aef7dee15d93ff9642ce01f5505ae57e21e82f5f67\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://f9d68399b89f27e2ea12032200eb8411c260a6f35ffae697a2b9e1c2c261056e\",\"dweb:/ipfs/QmYozTrygsbLe1LoxAuxjf8Uy2yWZwmi4RmkvKrTKr787F\"]},\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IDoubleProxy.sol\":{\"keccak256\":\"0xb3775ff336d8ca9e0f7cb3b7e7c322d96c6360b53ec4a3ce45c6540d4f0126a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://6ec1948724904ecf9185f960548865d20a13969a840c926e9162e4bb354d18f6\",\"dweb:/ipfs/QmXbRyhfnW3E4Mij5y8v9JfHVB2vqxxwDgNfvHeu3wHiHJ\"]},\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IERC20WrapperV1.sol\":{\"keccak256\":\"0xb11ab8431790ecf02d6380277e277a1e44fcf1cbc81973301149e7080157ea4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b5dfc1840e8834ba39b1a634fdc2ba67d250adc4f8540f0ee33e16439ccb9cd\",\"dweb:/ipfs/QmTyF4vz44kcYuLuZAEW7tBxWuMiNZAojDKopi8oeudgk3\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]},\"contracts/interfaces/IEthItemMainInterface.sol\":{\"keccak256\":\"0x1bc85f4e88618a2d75910da856d5d43a87213463dae57054b44aa0e2220c43e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12240288d6503024c37ad756722f451ad3d819affd30b9d54ca0e06942c414b0\",\"dweb:/ipfs/QmU1hLcanobgXgEEXbbA56YPob23ghDXXqjK7gCCXbj3mT\"]},\"contracts/interfaces/IEthItemModelBase.sol\":{\"keccak256\":\"0x2ef4d851f1127e58dc496490f84ebe5690bff39c48a0ff43338d0087e3b114da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7db0efdf2c2c6c758fa12146e9aa31ebe1fc7b1eaa36d644ada5a7696b22c627\",\"dweb:/ipfs/QmXP62zz7qHJtQfxNRoxPsPiJxhXTKaKRfjCHGxetwgYyV\"]},\"contracts/interfaces/IMVDFunctionalitiesManager.sol\":{\"keccak256\":\"0x050d033b3f1926ad9e2c4f0fbe7f90f81329031bc20f74a3763f94807ebbe1c9\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://ff6127103e5d260211c12c4724885a0ef94af693ca66f153d790bd362bbcc75e\",\"dweb:/ipfs/QmPWzoX8mm18cbLGtuybLpEkUWd4cPD6yYtLnTdUeWKMXQ\"]},\"contracts/interfaces/IMVDProxy.sol\":{\"keccak256\":\"0x4ec6db71aadf5a452fb98805e8d8652ab24251146f3d99c4438948f2b2c7d08d\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://0f2f95f6c40623a9d90932d2c9ae3e931cabb2704447db8148f33beebc2c69d3\",\"dweb:/ipfs/QmfAXd4ZG8HKisCQPCu9Kx237fomRLUB7UBN43t3bFjoCY\"]},\"contracts/interfaces/IMateriaFactory.sol\":{\"keccak256\":\"0xbb23d0937dd4e8da3b15e4e461603554abc9945d40b713f5f8f6e612d7e36dae\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://1cc856dd3375c7c345c693edda94b27d5c03d666843989308d6e61ef786b3718\",\"dweb:/ipfs/QmZaq9Vec3gVXNFoaWX56B2DQPYjpiDahdEoqogskHiJAp\"]},\"contracts/interfaces/IMateriaOrchestrator.sol\":{\"keccak256\":\"0x178eea6d9abe7758adbf30d406c9e3b1e05028441e6bf2661f6ac9d7441b06fc\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://b96f2d38b59f06bbfdf7d13e5a375e8eb6e1de507f40be7e7cbe37b34526a0e6\",\"dweb:/ipfs/QmSgMmM6Uk2EpgwNZxZpJf3yHHPQZ6LvcBWAV9DuPSnrCm\"]},\"contracts/interfaces/IMateriaPair.sol\":{\"keccak256\":\"0x9bebb503cf622a7e7328ff812b8817e1d3b22e273d345083118e92522b810693\",\"urls\":[\"bzz-raw://a0b3308a2e9f28a85ec586372329792eaf32562c7293af0657ef03f8d04bc7f9\",\"dweb:/ipfs/QmegwdpH1wYAUtTwKu1yUiekj13CB251znNc4Kb2Jf5b2L\"]},\"contracts/interfaces/INativeV1.sol\":{\"keccak256\":\"0x923c01bc275842ef09bd388355d611e119f115b92c283beb11b88d783696bae5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://117e0b85dba46111c974aa4a9e6ddd46d9d75198e93b6e2c571604fb5b25f5cb\",\"dweb:/ipfs/QmaVw7wqeR8jWMW55VPp6F1cMcGhb4VLAG3fPpRwTHmn3D\"]},\"contracts/libraries/MateriaLibrary.sol\":{\"keccak256\":\"0x84b8cdd67ecab6d9bd442140670a16c4608fefdcaa702c25339a89b0527381c6\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://f2ce38a46f0ddc6b043ba9e91590f482553fc96c7bec769825d36089f6d08887\",\"dweb:/ipfs/QmXVp7AwoHFm4whU26XE9kvaYmfb4QyXrzsqaEGXvgybFN\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xe04b4ed1aab8779734d012e907f742e8b6e8ad539c01d5466b9eb58752fdc514\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://667941f2ea3584629681a303e988ffcbc33a2e8313f4658ad8700b2209b3ea4d\",\"dweb:/ipfs/QmafqLrntkf6gRyhAHt4wYojdHwuZXeD8gcE7FJWW6rKWm\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0xb2c4a89b2ee4538b41badb2b6e2d141deeca68be9298ec3e7f98b6812b4ee2a2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bf3e8a68c38541e0425dfd1f825371086a9a18eaadf12000e00b0440156198b\",\"dweb:/ipfs/QmcfasSoXaDg5A5dscMiKH41fWnCFnbJfpSAzn5gbMaVxd\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/MateriaSwapper.sol:MateriaSwapper": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "wrapper",
              "type": "address"
            }
          ],
          "name": "_wrapEth",
          "outputs": [
            {
              "internalType": "address",
              "name": "interoperable",
              "type": "address"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "name": "onERC1155BatchReceived",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "onERC1155Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "608060405234801561001057600080fd5b506152ef806100206000396000f3fe6080604052600436106100b15760003560e01c80638803dbee11610069578063f23a6e611161004e578063f23a6e61146101b9578063f717cd6d146101d9578063fb3bdb41146101f9576100b1565b80638803dbee1461016c578063bc197c811461018c576100b1565b806338ed17391161009a57806338ed1739146101195780634a25d94a146101395780637ff36ab514610159576100b1565b806301ffc9a7146100b657806318cbafe5146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d13660046146ed565b61020c565b6040516100e39190614b8a565b60405180910390f35b3480156100f857600080fd5b5061010c61010736600461499b565b610214565b6040516100e39190614b46565b34801561012557600080fd5b5061010c61013436600461499b565b6105b8565b34801561014557600080fd5b5061010c61015436600461499b565b610b0c565b61010c6101673660046148a3565b611115565b34801561017857600080fd5b5061010c61018736600461499b565b611549565b34801561019857600080fd5b506101ac6101a7366004614598565b611c42565b6040516100e39190614b95565b3480156101c557600080fd5b506101ac6101d4366004614653565b611c49565b6101ec6101e7366004614793565b611d3c565b6040516100e39190614adb565b61010c6102073660046148a3565b611db9565b60005b919050565b606081428110156102405760405162461bcd60e51b815260040161023790614dc6565b60405180910390fd5b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561027b57600080fd5b505afa15801561028f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b3919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156102f057600080fd5b505afa158015610304573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610328919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036557600080fd5b505afa158015610379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039d919061477b565b90506103d3886000815181106103c357634e487b7160e01b600052603260045260246000fd5b602002602001015133308d612293565b610406886000815181106103f757634e487b7160e01b600052603260045260246000fd5b60200260200101518b84612398565b8960008151811061042757634e487b7160e01b600052603260045260246000fd5b60200260200101819c50826001600160a01b03166001600160a01b03168152505050610454838b8a612694565b94508885600187516104669190615200565b8151811061048457634e487b7160e01b600052603260045260246000fd5b602002602001015110156104aa5760405162461bcd60e51b815260040161023790614e5a565b61055f886000815181106104ce57634e487b7160e01b600052603260045260246000fd5b6020026020010151610531858b6000815181106104fb57634e487b7160e01b600052603260045260246000fd5b60200260200101518c60018151811061052457634e487b7160e01b600052603260045260246000fd5b6020026020010151612843565b8760008151811061055257634e487b7160e01b600052603260045260246000fd5b60200260200101516128b3565b61056b83868a306129b5565b6105ab81866001885161057e9190615200565b8151811061059c57634e487b7160e01b600052603260045260246000fd5b6020026020010151848a612ba2565b5050505095945050505050565b606081428110156105db5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561061657600080fd5b505afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068b57600080fd5b505afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c3919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561070057600080fd5b505afa158015610714573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610738919061457c565b905061075e886000815181106103c357634e487b7160e01b600052603260045260246000fd5b6107918860008151811061078257634e487b7160e01b600052603260045260246000fd5b60200260200101518b83612398565b896000815181106107b257634e487b7160e01b600052603260045260246000fd5b60200260200101819c50826001600160a01b03166001600160a01b0316815250505060008060006108178b60018d516107eb9190615200565b8151811061080957634e487b7160e01b600052603260045260246000fd5b602002602001015185612c2b565b90935091508215801561087057508a60018c516108349190615200565b8151811061085257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b031614155b1561099c578a60018c516108849190615200565b815181106108a257634e487b7160e01b600052603260045260246000fd5b602002602001015190506108b6818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b71906108fe908590600401614fdf565b60206040518083038186803b15801561091657600080fd5b505afa15801561092a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094e919061457c565b8b60018d5161095d9190615200565b8151811061097b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6109a7868e8d612694565b97508b8860018a516109b99190615200565b815181106109d757634e487b7160e01b600052603260045260246000fd5b602002602001015110156109fd5760405162461bcd60e51b815260040161023790614e5a565b610a988b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b6020026020010151610a77888e600081518110610a4e57634e487b7160e01b600052603260045260246000fd5b60200260200101518f60018151811061052457634e487b7160e01b600052603260045260246000fd5b8a60008151811061055257634e487b7160e01b600052603260045260246000fd5b8215610aaf57610aaa86898d8d6129b5565b610afc565b610abb86898d306129b5565b610afc82828a60018c51610acf9190615200565b81518110610aed57634e487b7160e01b600052603260045260246000fd5b6020026020010151878e612de2565b5050505050505095945050505050565b60608142811015610b2f5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6a57600080fd5b505afa158015610b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba2919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610bdf57600080fd5b505afa158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c17919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c919061477b565b9050600088600081518110610cb157634e487b7160e01b600052603260045260246000fd5b60200260200101519050826001600160a01b0316630c0f6b71846001600160a01b0316631bf8ee708c600081518110610cfa57634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b8152600401610d1e9190614adb565b60206040518083038186803b158015610d3657600080fd5b505afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e919061477b565b6040518263ffffffff1660e01b8152600401610d8a9190614fdf565b60206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda919061457c565b89600081518110610dfb57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050610e26848c8b612ee1565b955088600081518110610e4957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8957600080fd5b505afa158015610e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec1919061477b565b610ecc906012615200565b610ed790600a615113565b86600081518110610ef857634e487b7160e01b600052603260045260246000fd5b6020026020010151610f0a91906150ad565b610f15906001615095565b86600081518110610f3657634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508986600081518110610f6457634e487b7160e01b600052603260045260246000fd5b60200260200101511115610f8a5760405162461bcd60e51b815260040161023790614c30565b610fbe81333089600081518110610fb157634e487b7160e01b600052603260045260246000fd5b6020026020010151612293565b610ff18187600081518110610fe357634e487b7160e01b600052603260045260246000fd5b602002602001015185612398565b90508660008151811061101457634e487b7160e01b600052603260045260246000fd5b6020026020010181815250506110bb8960008151811061104457634e487b7160e01b600052603260045260246000fd5b602002602001015161109a868c60008151811061107157634e487b7160e01b600052603260045260246000fd5b60200260200101518d60018151811061052457634e487b7160e01b600052603260045260246000fd5b8860008151811061055257634e487b7160e01b600052603260045260246000fd5b6110c784878b306129b5565b6111078287600189516110da9190615200565b815181106110f857634e487b7160e01b600052603260045260246000fd5b6020026020010151858b612ba2565b505050505095945050505050565b606081428110156111385760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e857600080fd5b505afa1580156111fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611220919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561125d57600080fd5b505afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611295919061457c565b90506112a13482611d3c565b886000815181106112c257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505060008060006112f98b60018d516107eb9190615200565b90935091508215801561135257508a60018c516113169190615200565b8151811061133457634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b031614155b1561147e578a60018c516113669190615200565b8151811061138457634e487b7160e01b600052603260045260246000fd5b60200260200101519050611398818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b71906113e0908590600401614fdf565b60206040518083038186803b1580156113f857600080fd5b505afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611430919061457c565b8b60018d5161143f9190615200565b8151811061145d57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61148986348d612694565b97508b8860018a5161149b9190615200565b815181106114b957634e487b7160e01b600052603260045260246000fd5b602002602001015110156114df5760405162461bcd60e51b815260040161023790614e5a565b6115038b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b821561151a5761151586898d8d6129b5565b61153a565b61152686898d306129b5565b61153a82828a60018c51610acf9190615200565b50505050505050949350505050565b6060814281101561156c5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156115a757600080fd5b505afa1580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561161c57600080fd5b505afa158015611630573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611654919061457c565b905060008760008151811061167957634e487b7160e01b600052603260045260246000fd5b60200260200101519050816001600160a01b0316630c0f6b71836001600160a01b0316631bf8ee708b6000815181106116c257634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b81526004016116e69190614adb565b60206040518083038186803b1580156116fe57600080fd5b505afa158015611712573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611736919061477b565b6040518263ffffffff1660e01b81526004016117529190614fdf565b60206040518083038186803b15801561176a57600080fd5b505afa15801561177e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a2919061457c565b886000815181106117c357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506000806117f88a60018c516107eb9190615200565b90925090506000821580156118c357508a60018c516118179190615200565b8151811061183557634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b7919061457c565b6001600160a01b031614155b156119ef578a60018c516118d79190615200565b815181106118f557634e487b7160e01b600052603260045260246000fd5b60200260200101519050611909818e612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909d506001600160a01b03861690630c0f6b7190611951908590600401614fdf565b60206040518083038186803b15801561196957600080fd5b505afa15801561197d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a1919061457c565b8b60018d516119b09190615200565b815181106119ce57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6119fa868e8d612ee1565b9750836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a3557600080fd5b505afa158015611a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6d919061477b565b611a78906012615200565b611a8390600a615113565b88600081518110611aa457634e487b7160e01b600052603260045260246000fd5b6020026020010151611ab691906150ad565b611ac1906001615095565b88600081518110611ae257634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508b88600081518110611b1057634e487b7160e01b600052603260045260246000fd5b60200260200101511115611b365760405162461bcd60e51b815260040161023790614c30565b611b5d8433308b600081518110610fb157634e487b7160e01b600052603260045260246000fd5b611b908489600081518110611b8257634e487b7160e01b600052603260045260246000fd5b602002602001015187612398565b905088600081518110611bb357634e487b7160e01b600052603260045260246000fd5b602002602001018181525050611be38b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b8215611bf557610aaa86898d8d6129b5565b611c0186898d306129b5565b610afc82828a60018c51611c159190615200565b81518110611c3357634e487b7160e01b600052603260045260246000fd5b6020026020010151888e612de2565b6000806000fd5b600080806060818082611c5e888a018a614902565b80519197509150611c7890820160209081019083016147e6565b92975090955093509150611c8d905033613086565b15611c985788611caa565b611caa89670de0b6b3a76400006151e1565b98508460021415611cc757611cc28985858585613116565b611d0b565b8460031415611cde57611cc2848a85858f8661359d565b8460041415611cf457611cc28985858585613a16565b84600514156100b157611cc2848a85858f86613d34565b507ff23a6e61000000000000000000000000000000000000000000000000000000009b9a5050505050505050505050565b6000816001600160a01b031663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611db191906147c2565b949350505050565b60608142811015611ddc5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1757600080fd5b505afa158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015611e8c57600080fd5b505afa158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec4919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0157600080fd5b505afa158015611f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f39919061457c565b90506000806000611f7e8b60018d51611f529190615200565b81518110611f7057634e487b7160e01b600052603260045260246000fd5b602002602001015186612c2b565b909350915082158015611fd757508a60018c51611f9b9190615200565b81518110611fb957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316846001600160a01b031614155b15612103578a60018c51611feb9190615200565b8151811061200957634e487b7160e01b600052603260045260246000fd5b6020026020010151905061201d818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03861690630c0f6b7190612065908590600401614fdf565b60206040518083038186803b15801561207d57600080fd5b505afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b5919061457c565b8b60018d516120c49190615200565b815181106120e257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61210e868d8d612ee1565b9750348860008151811061213257634e487b7160e01b600052603260045260246000fd5b602002602001015111156121585760405162461bcd60e51b815260040161023790614c30565b61218a8860008151811061217c57634e487b7160e01b600052603260045260246000fd5b602002602001015186611d3c565b8b6000815181106121ab57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506121ef8b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b82156122065761220186898d8d6129b5565b612226565b61221286898d306129b5565b61222682828a60018c51611c159190615200565b8760008151811061224757634e487b7160e01b600052603260045260246000fd5b602002602001015134111561153a5761153a338960008151811061227b57634e487b7160e01b600052603260045260246000fd5b60200260200101513461228e9190615200565b614090565b600080856001600160a01b03166323b872dd8686866040516024016122ba93929190614b09565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516123089190614a3e565b6000604051808303816000865af19150503d8060008114612345576040519150601f19603f3d011682016040523d82523d6000602084013e61234a565b606091505b509150915081801561237457508051158061237457508080602001905181019061237491906146cd565b6123905760405162461bcd60e51b815260040161023790614f4b565b505050505050565b60008083856001600160a01b031663dd62ed3e30866040518363ffffffff1660e01b81526004016123ca929190614aef565b60206040518083038186803b1580156123e257600080fd5b505afa1580156123f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241a919061477b565b10156124bd576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063095ea7b39061246990869060001990600401614b2d565b602060405180830381600087803b15801561248357600080fd5b505af1158015612497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bb91906146cd565b505b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526000906001600160a01b038516906340c10f19906125079089908990600401614b2d565b6040805180830381600087803b15801561252057600080fd5b505af1158015612534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255891906147c2565b506040517f0c0f6b710000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690630c0f6b71906125a1908490600401614fdf565b60206040518083038186803b1580156125b957600080fd5b505afa1580156125cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f1919061457c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081529093506001600160a01b038416906370a0823190612639903090600401614adb565b60206040518083038186803b15801561265157600080fd5b505afa158015612665573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612689919061477b565b915050935093915050565b60606002825110156126b85760405162461bcd60e51b815260040161023790614d32565b815167ffffffffffffffff8111156126e057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612709578160200160208202803683370190505b509050828160008151811061272e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505060005b6001835161274b9190615200565b81101561283b576000806127ba8786858151811061277957634e487b7160e01b600052603260045260246000fd5b60200260200101518786600161278f9190615095565b815181106127ad57634e487b7160e01b600052603260045260246000fd5b6020026020010151614122565b915091506127f08484815181106127e157634e487b7160e01b600052603260045260246000fd5b60200260200101518383614209565b846127fc856001615095565b8151811061281a57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050505080806128339061525a565b91505061273d565b509392505050565b600080600061285285856142a3565b9150915085828260405160200161286a929190614a04565b60405160208183030381529060405280519060200120604051602001612891929190614a5a565b60408051601f1981840301815291905280516020909101209695505050505050565b600080846001600160a01b031663a9059cbb85856040516024016128d8929190614b2d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516129269190614a3e565b6000604051808303816000865af19150503d8060008114612963576040519150601f19603f3d011682016040523d82523d6000602084013e612968565b606091505b509150915081801561299257508051158061299257508080602001905181019061299291906146cd565b6129ae5760405162461bcd60e51b815260040161023790614bf9565b5050505050565b60005b600183516129c69190615200565b8110156129ae576000808483815181106129f057634e487b7160e01b600052603260045260246000fd5b602002602001015185846001612a069190615095565b81518110612a2457634e487b7160e01b600052603260045260246000fd5b6020026020010151915091506000612a3c83836142a3565b509050600087612a4d866001615095565b81518110612a6b57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600080836001600160a01b0316866001600160a01b031614612a9957826000612a9d565b6000835b91509150600060028a51612ab19190615200565b8810612abd5788612aec565b612aec8c878c612ace8c6002615095565b8151811061052457634e487b7160e01b600052603260045260246000fd5b9050612af98c8888612843565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015612b36576020820181803683370190505b506040518563ffffffff1660e01b8152600401612b569493929190614ff6565b600060405180830381600087803b158015612b7057600080fd5b505af1158015612b84573d6000803e3d6000fd5b50505050505050505050508080612b9a9061525a565b9150506129b8565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab90612be99087908790600401614fe8565b600060405180830381600087803b158015612c0357600080fd5b505af1158015612c17573d6000803e3d6000fd5b50505050612c258184614090565b50505050565b600080836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c6757600080fd5b505afa925050508015612c97575060408051601f3d908101601f19168201909252612c949181019061457c565b60015b612d3b576040517f1bf8ee70000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841690631bf8ee7090612ce4908790600401614adb565b60206040518083038186803b158015612cfc57600080fd5b505afa158015612d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d34919061477b565b9050612d41565b50600191505b9250929050565b6000826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612d8357600080fd5b505afa158015612d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dbb919061477b565b612dc6906012615200565b612dd190600a615113565b612ddb90836151e1565b9392505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab90612e299088908790600401614fe8565b600060405180830381600087803b158015612e4357600080fd5b505af1158015612e57573d6000803e3d6000fd5b505050506129ae8482866001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612e8c9190614adb565b60206040518083038186803b158015612ea457600080fd5b505afa158015612eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edc919061477b565b6128b3565b6060600282511015612f055760405162461bcd60e51b815260040161023790614d32565b815167ffffffffffffffff811115612f2d57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612f56578160200160208202803683370190505b509050828160018351612f699190615200565b81518110612f8757634e487b7160e01b600052603260045260246000fd5b602002602001018181525050600060018351612fa39190615200565b90505b801561283b576000806130058786612fbf600187615200565b81518110612fdd57634e487b7160e01b600052603260045260246000fd5b60200260200101518786815181106127ad57634e487b7160e01b600052603260045260246000fd5b9150915061303b84848151811061302c57634e487b7160e01b600052603260045260246000fd5b60200260200101518383614326565b84613047600186615200565b8151811061306557634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505050808061307e90615243565b915050612fa6565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c157600080fd5b505afa9250505080156130f1575060408051601f3d908101601f191682019092526130ee9181019061477b565b60015b6130fd5750601261020f565b8060011461310b578061310e565b60005b91505061020f565b80428110156131375760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561317257600080fd5b505afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156131e757600080fd5b505afa1580156131fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321f919061457c565b905060008060006132388960018b516107eb9190615200565b90935091508215801561330157508860018a516132559190615200565b8151811061327357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132bd57600080fd5b505afa1580156132d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f5919061457c565b6001600160a01b031614155b1561342d578860018a516133159190615200565b8151811061333357634e487b7160e01b600052603260045260246000fd5b60200260200101519050613347818b612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909a506001600160a01b03851690630c0f6b719061338f908590600401614fdf565b60206040518083038186803b1580156133a757600080fd5b505afa1580156133bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133df919061457c565b8960018b516133ee9190615200565b8151811061340c57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b600061343a868d8c612694565b90508a816001835161344c9190615200565b8151811061346a57634e487b7160e01b600052603260045260246000fd5b602002602001015110156134905760405162461bcd60e51b815260040161023790614e5a565b61352b8a6000815181106134b457634e487b7160e01b600052603260045260246000fd5b602002602001015161350a888d6000815181106134e157634e487b7160e01b600052603260045260246000fd5b60200260200101518e60018151811061052457634e487b7160e01b600052603260045260246000fd5b8360008151811061055257634e487b7160e01b600052603260045260246000fd5b83156135425761353d86828c8c6129b5565b61358f565b61354e86828c306129b5565b61358f838383600185516135629190615200565b8151811061358057634e487b7160e01b600052603260045260246000fd5b6020026020010151888d612de2565b505050505050505050505050565b80428110156135be5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156135f957600080fd5b505afa15801561360d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613631919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561366e57600080fd5b505afa158015613682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a6919061457c565b905060008060006136bf8a60018c516107eb9190615200565b90935091508215801561378857508960018b516136dc9190615200565b815181106136fa57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561374457600080fd5b505afa158015613758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377c919061457c565b6001600160a01b031614155b156138b4578960018b5161379c9190615200565b815181106137ba57634e487b7160e01b600052603260045260246000fd5b602002602001015190506137ce818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b7190613816908590600401614fdf565b60206040518083038186803b15801561382e57600080fd5b505afa158015613842573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613866919061457c565b8a60018c516138759190615200565b8151811061389357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b60006138c1868e8d612ee1565b90508b816000815181106138e557634e487b7160e01b600052603260045260246000fd5b6020026020010151111561390b5760405162461bcd60e51b815260040161023790614c30565b6000808260008151811061392f57634e487b7160e01b600052603260045260246000fd5b60200260200101518e6139429190615200565b915081111561397e5761397e8c60008151811061396f57634e487b7160e01b600052603260045260246000fd5b60200260200101518b836128b3565b506139d08b6000815181106139a357634e487b7160e01b600052603260045260246000fd5b602002602001015161350a888e600081518110610a4e57634e487b7160e01b600052603260045260246000fd5b83156139e7576139e286828d8d6129b5565b613a07565b6139f386828d306129b5565b613a0783838360018551611c159190615200565b50505050505050505050505050565b8042811015613a375760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613a7257600080fd5b505afa158015613a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aaa919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1f919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015613b5c57600080fd5b505afa158015613b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b94919061477b565b90506000613ba3848b8a612694565b9050888160018351613bb59190615200565b81518110613bd357634e487b7160e01b600052603260045260246000fd5b60200260200101511015613bf95760405162461bcd60e51b815260040161023790614e5a565b613c4a88600081518110613c1d57634e487b7160e01b600052603260045260246000fd5b602002602001015161350a868b6000815181106104fb57634e487b7160e01b600052603260045260246000fd5b613c5684828a306129b5565b826001600160a01b031663b390c0ab838360018551613c759190615200565b81518110613c9357634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b8152600401613cb8929190614fe8565b600060405180830381600087803b158015613cd257600080fd5b505af1158015613ce6573d6000803e3d6000fd5b50505050613d28878260018451613cfd9190615200565b81518110613d1b57634e487b7160e01b600052603260045260246000fd5b6020026020010151614090565b50505050505050505050565b8042811015613d555760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613d9057600080fd5b505afa158015613da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc8919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015613e0557600080fd5b505afa158015613e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3d919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015613e7a57600080fd5b505afa158015613e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb2919061477b565b90506000613ec1848c8b612ee1565b90508981600081518110613ee557634e487b7160e01b600052603260045260246000fd5b60200260200101511115613f0b5760405162461bcd60e51b815260040161023790614c30565b60008082600081518110613f2f57634e487b7160e01b600052603260045260246000fd5b60200260200101518c613f429190615200565b9150811115613f7e57613f7e8a600081518110613f6f57634e487b7160e01b600052603260045260246000fd5b602002602001015189836128b3565b50613fd089600081518110613fa357634e487b7160e01b600052603260045260246000fd5b602002602001015161350a868c60008151811061107157634e487b7160e01b600052603260045260246000fd5b613fdc84828b306129b5565b826001600160a01b031663b390c0ab838360018551613ffb9190615200565b8151811061401957634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b815260040161403e929190614fe8565b600060405180830381600087803b15801561405857600080fd5b505af115801561406c573d6000803e3d6000fd5b50505050614083888260018451613cfd9190615200565b5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040516140ba9190614a3e565b60006040518083038185875af1925050503d80600081146140f7576040519150601f19603f3d011682016040523d82523d6000602084013e6140fc565b606091505b505090508061411d5760405162461bcd60e51b815260040161023790614e91565b505050565b600080600061413185856142a3565b509050600080614142888888612843565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561417a57600080fd5b505afa15801561418e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141b2919061472d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b0316146141f75780826141fa565b81815b90999098509650505050505050565b600080841161422a5760405162461bcd60e51b815260040161023790614d69565b60008311801561423a5750600082115b6142565760405162461bcd60e51b815260040161023790614eee565b6000614264856103e56143ba565b9050600061427282856143ba565b9050600061428c83614286886103e86143ba565b90614400565b905061429881836150ad565b979650505050505050565b600080826001600160a01b0316846001600160a01b031614156142d85760405162461bcd60e51b815260040161023790614dfd565b826001600160a01b0316846001600160a01b0316106142f85782846142fb565b83835b90925090506001600160a01b038216612d415760405162461bcd60e51b815260040161023790614fa8565b60008084116143475760405162461bcd60e51b815260040161023790614cd5565b6000831180156143575750600082115b6143735760405162461bcd60e51b815260040161023790614eee565b600061438b6103e861438586886143ba565b906143ba565b9050600061439f6103e5614385868961442e565b90506143b0600161428683856150ad565b9695505050505050565b60008115806143de575082826143d081836151e1565b92506143dc90836150ad565b145b6143fa5760405162461bcd60e51b815260040161023790614c67565b92915050565b60008261440d8382615095565b91508110156143fa5760405162461bcd60e51b815260040161023790614c9e565b60008261443b8382615200565b91508111156143fa5760405162461bcd60e51b815260040161023790614bc2565b805161020f816152a1565b600082601f830112614477578081fd5b8135602061448c61448783615071565b615047565b82815281810190858301838502870184018810156144a8578586fd5b855b858110156144cf5781356144bd816152a1565b845292840192908401906001016144aa565b5090979650505050505050565b60008083601f8401126144ed578182fd5b50813567ffffffffffffffff811115614504578182fd5b6020830191508360208083028501011115612d4157600080fd5b60008083601f84011261452f578182fd5b50813567ffffffffffffffff811115614546578182fd5b602083019150836020828501011115612d4157600080fd5b80516dffffffffffffffffffffffffffff8116811461020f57600080fd5b60006020828403121561458d578081fd5b8151612ddb816152a1565b60008060008060008060008060a0898b0312156145b3578384fd5b88356145be816152a1565b975060208901356145ce816152a1565b9650604089013567ffffffffffffffff808211156145ea578586fd5b6145f68c838d016144dc565b909850965060608b013591508082111561460e578586fd5b61461a8c838d016144dc565b909650945060808b0135915080821115614632578384fd5b5061463f8b828c0161451e565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561466b578182fd5b8635614676816152a1565b95506020870135614686816152a1565b94506040870135935060608701359250608087013567ffffffffffffffff8111156146af578283fd5b6146bb89828a0161451e565b979a9699509497509295939492505050565b6000602082840312156146de578081fd5b81518015158114612ddb578182fd5b6000602082840312156146fe578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612ddb578182fd5b600080600060608486031215614741578081fd5b61474a8461455e565b92506147586020850161455e565b9150604084015163ffffffff81168114614770578182fd5b809150509250925092565b60006020828403121561478c578081fd5b5051919050565b600080604083850312156147a5578182fd5b8235915060208301356147b7816152a1565b809150509250929050565b600080604083850312156147d4578182fd5b8251915060208301516147b7816152a1565b600080600080608085870312156147fb578182fd5b8451935060208086015167ffffffffffffffff811115614819578384fd5b8601601f81018813614829578384fd5b805161483761448782615071565b81815283810190838501858402850186018c1015614853578788fd5b8794505b8385101561487e57805161486a816152a1565b835260019490940193918501918501614857565b5080975050505050506148936040860161445c565b6060959095015193969295505050565b600080600080608085870312156148b8578182fd5b84359350602085013567ffffffffffffffff8111156148d5578283fd5b6148e187828801614467565b93505060408501356148f2816152a1565b9396929550929360600135925050565b60008060408385031215614914578182fd5b8235915060208084013567ffffffffffffffff80821115614933578384fd5b818601915086601f830112614946578384fd5b8135818111156149585761495861528b565b61496a84601f19601f84011601615047565b9150808252878482850101111561497f578485fd5b8084840185840137810190920192909252919491935090915050565b600080600080600060a086880312156149b2578283fd5b8535945060208601359350604086013567ffffffffffffffff8111156149d6578384fd5b6149e288828901614467565b93505060608601356149f3816152a1565b949793965091946080013592915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251614a50818460208701615217565b9190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015614b7e57835183529284019291840191600101614b62565b50909695505050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526016908201527f4558434553534956455f494e5055545f414d4f554e5400000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252602a908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4f555460408201527f5055545f414d4f554e5400000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a20494e56414c49445f5041544800000000604082015260600190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f494e53554646494349454e545f4f55545055545f414d4f554e54000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b60008582528460208301526001600160a01b03841660408301526080606083015282518060808401526150308160a0850160208701615217565b601f01601f19169190910160a00195945050505050565b60405181810167ffffffffffffffff811182821017156150695761506961528b565b604052919050565b600067ffffffffffffffff82111561508b5761508b61528b565b5060209081020190565b600082198211156150a8576150a8615275565b500190565b6000826150c857634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116150df575061510a565b8187048211156150f1576150f1615275565b808616156150fe57918102915b9490941c9380026150d0565b94509492505050565b6000612ddb600019848460008261512c57506001612ddb565b8161513957506000612ddb565b816001811461514f576002811461515957615186565b6001915050612ddb565b60ff84111561516a5761516a615275565b6001841b91508482111561518057615180615275565b50612ddb565b5060208310610133831016604e8410600b84101617156151b9575081810a838111156151b4576151b4615275565b612ddb565b6151c684848460016150cd565b8086048211156151d8576151d8615275565b02949350505050565b60008160001904831182151516156151fb576151fb615275565b500290565b60008282101561521257615212615275565b500390565b60005b8381101561523257818101518382015260200161521a565b83811115612c255750506000910152565b60008161525257615252615275565b506000190190565b600060001982141561526e5761526e615275565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146152b657600080fd5b5056fea26469706673582212202c7380dd619a0d52a6c7a8b8c79a1218838902a4c693ddafa9e09a21d681b5ee64736f6c63430008000033",
          "sourceMap": "437:16944:4:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "object": "6080604052600436106100b15760003560e01c80638803dbee11610069578063f23a6e611161004e578063f23a6e61146101b9578063f717cd6d146101d9578063fb3bdb41146101f9576100b1565b80638803dbee1461016c578063bc197c811461018c576100b1565b806338ed17391161009a57806338ed1739146101195780634a25d94a146101395780637ff36ab514610159576100b1565b806301ffc9a7146100b657806318cbafe5146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d13660046146ed565b61020c565b6040516100e39190614b8a565b60405180910390f35b3480156100f857600080fd5b5061010c61010736600461499b565b610214565b6040516100e39190614b46565b34801561012557600080fd5b5061010c61013436600461499b565b6105b8565b34801561014557600080fd5b5061010c61015436600461499b565b610b0c565b61010c6101673660046148a3565b611115565b34801561017857600080fd5b5061010c61018736600461499b565b611549565b34801561019857600080fd5b506101ac6101a7366004614598565b611c42565b6040516100e39190614b95565b3480156101c557600080fd5b506101ac6101d4366004614653565b611c49565b6101ec6101e7366004614793565b611d3c565b6040516100e39190614adb565b61010c6102073660046148a3565b611db9565b60005b919050565b606081428110156102405760405162461bcd60e51b815260040161023790614dc6565b60405180910390fd5b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561027b57600080fd5b505afa15801561028f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b3919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156102f057600080fd5b505afa158015610304573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610328919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036557600080fd5b505afa158015610379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039d919061477b565b90506103d3886000815181106103c357634e487b7160e01b600052603260045260246000fd5b602002602001015133308d612293565b610406886000815181106103f757634e487b7160e01b600052603260045260246000fd5b60200260200101518b84612398565b8960008151811061042757634e487b7160e01b600052603260045260246000fd5b60200260200101819c50826001600160a01b03166001600160a01b03168152505050610454838b8a612694565b94508885600187516104669190615200565b8151811061048457634e487b7160e01b600052603260045260246000fd5b602002602001015110156104aa5760405162461bcd60e51b815260040161023790614e5a565b61055f886000815181106104ce57634e487b7160e01b600052603260045260246000fd5b6020026020010151610531858b6000815181106104fb57634e487b7160e01b600052603260045260246000fd5b60200260200101518c60018151811061052457634e487b7160e01b600052603260045260246000fd5b6020026020010151612843565b8760008151811061055257634e487b7160e01b600052603260045260246000fd5b60200260200101516128b3565b61056b83868a306129b5565b6105ab81866001885161057e9190615200565b8151811061059c57634e487b7160e01b600052603260045260246000fd5b6020026020010151848a612ba2565b5050505095945050505050565b606081428110156105db5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561061657600080fd5b505afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068b57600080fd5b505afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c3919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561070057600080fd5b505afa158015610714573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610738919061457c565b905061075e886000815181106103c357634e487b7160e01b600052603260045260246000fd5b6107918860008151811061078257634e487b7160e01b600052603260045260246000fd5b60200260200101518b83612398565b896000815181106107b257634e487b7160e01b600052603260045260246000fd5b60200260200101819c50826001600160a01b03166001600160a01b0316815250505060008060006108178b60018d516107eb9190615200565b8151811061080957634e487b7160e01b600052603260045260246000fd5b602002602001015185612c2b565b90935091508215801561087057508a60018c516108349190615200565b8151811061085257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b031614155b1561099c578a60018c516108849190615200565b815181106108a257634e487b7160e01b600052603260045260246000fd5b602002602001015190506108b6818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b71906108fe908590600401614fdf565b60206040518083038186803b15801561091657600080fd5b505afa15801561092a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094e919061457c565b8b60018d5161095d9190615200565b8151811061097b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6109a7868e8d612694565b97508b8860018a516109b99190615200565b815181106109d757634e487b7160e01b600052603260045260246000fd5b602002602001015110156109fd5760405162461bcd60e51b815260040161023790614e5a565b610a988b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b6020026020010151610a77888e600081518110610a4e57634e487b7160e01b600052603260045260246000fd5b60200260200101518f60018151811061052457634e487b7160e01b600052603260045260246000fd5b8a60008151811061055257634e487b7160e01b600052603260045260246000fd5b8215610aaf57610aaa86898d8d6129b5565b610afc565b610abb86898d306129b5565b610afc82828a60018c51610acf9190615200565b81518110610aed57634e487b7160e01b600052603260045260246000fd5b6020026020010151878e612de2565b5050505050505095945050505050565b60608142811015610b2f5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6a57600080fd5b505afa158015610b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba2919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610bdf57600080fd5b505afa158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c17919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c919061477b565b9050600088600081518110610cb157634e487b7160e01b600052603260045260246000fd5b60200260200101519050826001600160a01b0316630c0f6b71846001600160a01b0316631bf8ee708c600081518110610cfa57634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b8152600401610d1e9190614adb565b60206040518083038186803b158015610d3657600080fd5b505afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e919061477b565b6040518263ffffffff1660e01b8152600401610d8a9190614fdf565b60206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda919061457c565b89600081518110610dfb57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050610e26848c8b612ee1565b955088600081518110610e4957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8957600080fd5b505afa158015610e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec1919061477b565b610ecc906012615200565b610ed790600a615113565b86600081518110610ef857634e487b7160e01b600052603260045260246000fd5b6020026020010151610f0a91906150ad565b610f15906001615095565b86600081518110610f3657634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508986600081518110610f6457634e487b7160e01b600052603260045260246000fd5b60200260200101511115610f8a5760405162461bcd60e51b815260040161023790614c30565b610fbe81333089600081518110610fb157634e487b7160e01b600052603260045260246000fd5b6020026020010151612293565b610ff18187600081518110610fe357634e487b7160e01b600052603260045260246000fd5b602002602001015185612398565b90508660008151811061101457634e487b7160e01b600052603260045260246000fd5b6020026020010181815250506110bb8960008151811061104457634e487b7160e01b600052603260045260246000fd5b602002602001015161109a868c60008151811061107157634e487b7160e01b600052603260045260246000fd5b60200260200101518d60018151811061052457634e487b7160e01b600052603260045260246000fd5b8860008151811061055257634e487b7160e01b600052603260045260246000fd5b6110c784878b306129b5565b6111078287600189516110da9190615200565b815181106110f857634e487b7160e01b600052603260045260246000fd5b6020026020010151858b612ba2565b505050505095945050505050565b606081428110156111385760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e857600080fd5b505afa1580156111fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611220919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561125d57600080fd5b505afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611295919061457c565b90506112a13482611d3c565b886000815181106112c257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505060008060006112f98b60018d516107eb9190615200565b90935091508215801561135257508a60018c516113169190615200565b8151811061133457634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b031614155b1561147e578a60018c516113669190615200565b8151811061138457634e487b7160e01b600052603260045260246000fd5b60200260200101519050611398818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b71906113e0908590600401614fdf565b60206040518083038186803b1580156113f857600080fd5b505afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611430919061457c565b8b60018d5161143f9190615200565b8151811061145d57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61148986348d612694565b97508b8860018a5161149b9190615200565b815181106114b957634e487b7160e01b600052603260045260246000fd5b602002602001015110156114df5760405162461bcd60e51b815260040161023790614e5a565b6115038b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b821561151a5761151586898d8d6129b5565b61153a565b61152686898d306129b5565b61153a82828a60018c51610acf9190615200565b50505050505050949350505050565b6060814281101561156c5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156115a757600080fd5b505afa1580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561161c57600080fd5b505afa158015611630573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611654919061457c565b905060008760008151811061167957634e487b7160e01b600052603260045260246000fd5b60200260200101519050816001600160a01b0316630c0f6b71836001600160a01b0316631bf8ee708b6000815181106116c257634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b81526004016116e69190614adb565b60206040518083038186803b1580156116fe57600080fd5b505afa158015611712573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611736919061477b565b6040518263ffffffff1660e01b81526004016117529190614fdf565b60206040518083038186803b15801561176a57600080fd5b505afa15801561177e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a2919061457c565b886000815181106117c357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506000806117f88a60018c516107eb9190615200565b90925090506000821580156118c357508a60018c516118179190615200565b8151811061183557634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b7919061457c565b6001600160a01b031614155b156119ef578a60018c516118d79190615200565b815181106118f557634e487b7160e01b600052603260045260246000fd5b60200260200101519050611909818e612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909d506001600160a01b03861690630c0f6b7190611951908590600401614fdf565b60206040518083038186803b15801561196957600080fd5b505afa15801561197d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a1919061457c565b8b60018d516119b09190615200565b815181106119ce57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6119fa868e8d612ee1565b9750836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a3557600080fd5b505afa158015611a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6d919061477b565b611a78906012615200565b611a8390600a615113565b88600081518110611aa457634e487b7160e01b600052603260045260246000fd5b6020026020010151611ab691906150ad565b611ac1906001615095565b88600081518110611ae257634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508b88600081518110611b1057634e487b7160e01b600052603260045260246000fd5b60200260200101511115611b365760405162461bcd60e51b815260040161023790614c30565b611b5d8433308b600081518110610fb157634e487b7160e01b600052603260045260246000fd5b611b908489600081518110611b8257634e487b7160e01b600052603260045260246000fd5b602002602001015187612398565b905088600081518110611bb357634e487b7160e01b600052603260045260246000fd5b602002602001018181525050611be38b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b8215611bf557610aaa86898d8d6129b5565b611c0186898d306129b5565b610afc82828a60018c51611c159190615200565b81518110611c3357634e487b7160e01b600052603260045260246000fd5b6020026020010151888e612de2565b6000806000fd5b600080806060818082611c5e888a018a614902565b80519197509150611c7890820160209081019083016147e6565b92975090955093509150611c8d905033613086565b15611c985788611caa565b611caa89670de0b6b3a76400006151e1565b98508460021415611cc757611cc28985858585613116565b611d0b565b8460031415611cde57611cc2848a85858f8661359d565b8460041415611cf457611cc28985858585613a16565b84600514156100b157611cc2848a85858f86613d34565b507ff23a6e61000000000000000000000000000000000000000000000000000000009b9a5050505050505050505050565b6000816001600160a01b031663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611db191906147c2565b949350505050565b60608142811015611ddc5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1757600080fd5b505afa158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015611e8c57600080fd5b505afa158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec4919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0157600080fd5b505afa158015611f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f39919061457c565b90506000806000611f7e8b60018d51611f529190615200565b81518110611f7057634e487b7160e01b600052603260045260246000fd5b602002602001015186612c2b565b909350915082158015611fd757508a60018c51611f9b9190615200565b81518110611fb957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316846001600160a01b031614155b15612103578a60018c51611feb9190615200565b8151811061200957634e487b7160e01b600052603260045260246000fd5b6020026020010151905061201d818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03861690630c0f6b7190612065908590600401614fdf565b60206040518083038186803b15801561207d57600080fd5b505afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b5919061457c565b8b60018d516120c49190615200565b815181106120e257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61210e868d8d612ee1565b9750348860008151811061213257634e487b7160e01b600052603260045260246000fd5b602002602001015111156121585760405162461bcd60e51b815260040161023790614c30565b61218a8860008151811061217c57634e487b7160e01b600052603260045260246000fd5b602002602001015186611d3c565b8b6000815181106121ab57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506121ef8b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b82156122065761220186898d8d6129b5565b612226565b61221286898d306129b5565b61222682828a60018c51611c159190615200565b8760008151811061224757634e487b7160e01b600052603260045260246000fd5b602002602001015134111561153a5761153a338960008151811061227b57634e487b7160e01b600052603260045260246000fd5b60200260200101513461228e9190615200565b614090565b600080856001600160a01b03166323b872dd8686866040516024016122ba93929190614b09565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516123089190614a3e565b6000604051808303816000865af19150503d8060008114612345576040519150601f19603f3d011682016040523d82523d6000602084013e61234a565b606091505b509150915081801561237457508051158061237457508080602001905181019061237491906146cd565b6123905760405162461bcd60e51b815260040161023790614f4b565b505050505050565b60008083856001600160a01b031663dd62ed3e30866040518363ffffffff1660e01b81526004016123ca929190614aef565b60206040518083038186803b1580156123e257600080fd5b505afa1580156123f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241a919061477b565b10156124bd576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063095ea7b39061246990869060001990600401614b2d565b602060405180830381600087803b15801561248357600080fd5b505af1158015612497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bb91906146cd565b505b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526000906001600160a01b038516906340c10f19906125079089908990600401614b2d565b6040805180830381600087803b15801561252057600080fd5b505af1158015612534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255891906147c2565b506040517f0c0f6b710000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690630c0f6b71906125a1908490600401614fdf565b60206040518083038186803b1580156125b957600080fd5b505afa1580156125cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f1919061457c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081529093506001600160a01b038416906370a0823190612639903090600401614adb565b60206040518083038186803b15801561265157600080fd5b505afa158015612665573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612689919061477b565b915050935093915050565b60606002825110156126b85760405162461bcd60e51b815260040161023790614d32565b815167ffffffffffffffff8111156126e057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612709578160200160208202803683370190505b509050828160008151811061272e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505060005b6001835161274b9190615200565b81101561283b576000806127ba8786858151811061277957634e487b7160e01b600052603260045260246000fd5b60200260200101518786600161278f9190615095565b815181106127ad57634e487b7160e01b600052603260045260246000fd5b6020026020010151614122565b915091506127f08484815181106127e157634e487b7160e01b600052603260045260246000fd5b60200260200101518383614209565b846127fc856001615095565b8151811061281a57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050505080806128339061525a565b91505061273d565b509392505050565b600080600061285285856142a3565b9150915085828260405160200161286a929190614a04565b60405160208183030381529060405280519060200120604051602001612891929190614a5a565b60408051601f1981840301815291905280516020909101209695505050505050565b600080846001600160a01b031663a9059cbb85856040516024016128d8929190614b2d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516129269190614a3e565b6000604051808303816000865af19150503d8060008114612963576040519150601f19603f3d011682016040523d82523d6000602084013e612968565b606091505b509150915081801561299257508051158061299257508080602001905181019061299291906146cd565b6129ae5760405162461bcd60e51b815260040161023790614bf9565b5050505050565b60005b600183516129c69190615200565b8110156129ae576000808483815181106129f057634e487b7160e01b600052603260045260246000fd5b602002602001015185846001612a069190615095565b81518110612a2457634e487b7160e01b600052603260045260246000fd5b6020026020010151915091506000612a3c83836142a3565b509050600087612a4d866001615095565b81518110612a6b57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600080836001600160a01b0316866001600160a01b031614612a9957826000612a9d565b6000835b91509150600060028a51612ab19190615200565b8810612abd5788612aec565b612aec8c878c612ace8c6002615095565b8151811061052457634e487b7160e01b600052603260045260246000fd5b9050612af98c8888612843565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015612b36576020820181803683370190505b506040518563ffffffff1660e01b8152600401612b569493929190614ff6565b600060405180830381600087803b158015612b7057600080fd5b505af1158015612b84573d6000803e3d6000fd5b50505050505050505050508080612b9a9061525a565b9150506129b8565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab90612be99087908790600401614fe8565b600060405180830381600087803b158015612c0357600080fd5b505af1158015612c17573d6000803e3d6000fd5b50505050612c258184614090565b50505050565b600080836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c6757600080fd5b505afa925050508015612c97575060408051601f3d908101601f19168201909252612c949181019061457c565b60015b612d3b576040517f1bf8ee70000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841690631bf8ee7090612ce4908790600401614adb565b60206040518083038186803b158015612cfc57600080fd5b505afa158015612d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d34919061477b565b9050612d41565b50600191505b9250929050565b6000826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612d8357600080fd5b505afa158015612d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dbb919061477b565b612dc6906012615200565b612dd190600a615113565b612ddb90836151e1565b9392505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab90612e299088908790600401614fe8565b600060405180830381600087803b158015612e4357600080fd5b505af1158015612e57573d6000803e3d6000fd5b505050506129ae8482866001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612e8c9190614adb565b60206040518083038186803b158015612ea457600080fd5b505afa158015612eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edc919061477b565b6128b3565b6060600282511015612f055760405162461bcd60e51b815260040161023790614d32565b815167ffffffffffffffff811115612f2d57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612f56578160200160208202803683370190505b509050828160018351612f699190615200565b81518110612f8757634e487b7160e01b600052603260045260246000fd5b602002602001018181525050600060018351612fa39190615200565b90505b801561283b576000806130058786612fbf600187615200565b81518110612fdd57634e487b7160e01b600052603260045260246000fd5b60200260200101518786815181106127ad57634e487b7160e01b600052603260045260246000fd5b9150915061303b84848151811061302c57634e487b7160e01b600052603260045260246000fd5b60200260200101518383614326565b84613047600186615200565b8151811061306557634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505050808061307e90615243565b915050612fa6565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c157600080fd5b505afa9250505080156130f1575060408051601f3d908101601f191682019092526130ee9181019061477b565b60015b6130fd5750601261020f565b8060011461310b578061310e565b60005b91505061020f565b80428110156131375760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561317257600080fd5b505afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156131e757600080fd5b505afa1580156131fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321f919061457c565b905060008060006132388960018b516107eb9190615200565b90935091508215801561330157508860018a516132559190615200565b8151811061327357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132bd57600080fd5b505afa1580156132d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f5919061457c565b6001600160a01b031614155b1561342d578860018a516133159190615200565b8151811061333357634e487b7160e01b600052603260045260246000fd5b60200260200101519050613347818b612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909a506001600160a01b03851690630c0f6b719061338f908590600401614fdf565b60206040518083038186803b1580156133a757600080fd5b505afa1580156133bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133df919061457c565b8960018b516133ee9190615200565b8151811061340c57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b600061343a868d8c612694565b90508a816001835161344c9190615200565b8151811061346a57634e487b7160e01b600052603260045260246000fd5b602002602001015110156134905760405162461bcd60e51b815260040161023790614e5a565b61352b8a6000815181106134b457634e487b7160e01b600052603260045260246000fd5b602002602001015161350a888d6000815181106134e157634e487b7160e01b600052603260045260246000fd5b60200260200101518e60018151811061052457634e487b7160e01b600052603260045260246000fd5b8360008151811061055257634e487b7160e01b600052603260045260246000fd5b83156135425761353d86828c8c6129b5565b61358f565b61354e86828c306129b5565b61358f838383600185516135629190615200565b8151811061358057634e487b7160e01b600052603260045260246000fd5b6020026020010151888d612de2565b505050505050505050505050565b80428110156135be5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156135f957600080fd5b505afa15801561360d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613631919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561366e57600080fd5b505afa158015613682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a6919061457c565b905060008060006136bf8a60018c516107eb9190615200565b90935091508215801561378857508960018b516136dc9190615200565b815181106136fa57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561374457600080fd5b505afa158015613758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377c919061457c565b6001600160a01b031614155b156138b4578960018b5161379c9190615200565b815181106137ba57634e487b7160e01b600052603260045260246000fd5b602002602001015190506137ce818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b7190613816908590600401614fdf565b60206040518083038186803b15801561382e57600080fd5b505afa158015613842573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613866919061457c565b8a60018c516138759190615200565b8151811061389357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b60006138c1868e8d612ee1565b90508b816000815181106138e557634e487b7160e01b600052603260045260246000fd5b6020026020010151111561390b5760405162461bcd60e51b815260040161023790614c30565b6000808260008151811061392f57634e487b7160e01b600052603260045260246000fd5b60200260200101518e6139429190615200565b915081111561397e5761397e8c60008151811061396f57634e487b7160e01b600052603260045260246000fd5b60200260200101518b836128b3565b506139d08b6000815181106139a357634e487b7160e01b600052603260045260246000fd5b602002602001015161350a888e600081518110610a4e57634e487b7160e01b600052603260045260246000fd5b83156139e7576139e286828d8d6129b5565b613a07565b6139f386828d306129b5565b613a0783838360018551611c159190615200565b50505050505050505050505050565b8042811015613a375760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613a7257600080fd5b505afa158015613a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aaa919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1f919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015613b5c57600080fd5b505afa158015613b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b94919061477b565b90506000613ba3848b8a612694565b9050888160018351613bb59190615200565b81518110613bd357634e487b7160e01b600052603260045260246000fd5b60200260200101511015613bf95760405162461bcd60e51b815260040161023790614e5a565b613c4a88600081518110613c1d57634e487b7160e01b600052603260045260246000fd5b602002602001015161350a868b6000815181106104fb57634e487b7160e01b600052603260045260246000fd5b613c5684828a306129b5565b826001600160a01b031663b390c0ab838360018551613c759190615200565b81518110613c9357634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b8152600401613cb8929190614fe8565b600060405180830381600087803b158015613cd257600080fd5b505af1158015613ce6573d6000803e3d6000fd5b50505050613d28878260018451613cfd9190615200565b81518110613d1b57634e487b7160e01b600052603260045260246000fd5b6020026020010151614090565b50505050505050505050565b8042811015613d555760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613d9057600080fd5b505afa158015613da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc8919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015613e0557600080fd5b505afa158015613e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3d919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015613e7a57600080fd5b505afa158015613e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb2919061477b565b90506000613ec1848c8b612ee1565b90508981600081518110613ee557634e487b7160e01b600052603260045260246000fd5b60200260200101511115613f0b5760405162461bcd60e51b815260040161023790614c30565b60008082600081518110613f2f57634e487b7160e01b600052603260045260246000fd5b60200260200101518c613f429190615200565b9150811115613f7e57613f7e8a600081518110613f6f57634e487b7160e01b600052603260045260246000fd5b602002602001015189836128b3565b50613fd089600081518110613fa357634e487b7160e01b600052603260045260246000fd5b602002602001015161350a868c60008151811061107157634e487b7160e01b600052603260045260246000fd5b613fdc84828b306129b5565b826001600160a01b031663b390c0ab838360018551613ffb9190615200565b8151811061401957634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b815260040161403e929190614fe8565b600060405180830381600087803b15801561405857600080fd5b505af115801561406c573d6000803e3d6000fd5b50505050614083888260018451613cfd9190615200565b5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040516140ba9190614a3e565b60006040518083038185875af1925050503d80600081146140f7576040519150601f19603f3d011682016040523d82523d6000602084013e6140fc565b606091505b505090508061411d5760405162461bcd60e51b815260040161023790614e91565b505050565b600080600061413185856142a3565b509050600080614142888888612843565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561417a57600080fd5b505afa15801561418e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141b2919061472d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b0316146141f75780826141fa565b81815b90999098509650505050505050565b600080841161422a5760405162461bcd60e51b815260040161023790614d69565b60008311801561423a5750600082115b6142565760405162461bcd60e51b815260040161023790614eee565b6000614264856103e56143ba565b9050600061427282856143ba565b9050600061428c83614286886103e86143ba565b90614400565b905061429881836150ad565b979650505050505050565b600080826001600160a01b0316846001600160a01b031614156142d85760405162461bcd60e51b815260040161023790614dfd565b826001600160a01b0316846001600160a01b0316106142f85782846142fb565b83835b90925090506001600160a01b038216612d415760405162461bcd60e51b815260040161023790614fa8565b60008084116143475760405162461bcd60e51b815260040161023790614cd5565b6000831180156143575750600082115b6143735760405162461bcd60e51b815260040161023790614eee565b600061438b6103e861438586886143ba565b906143ba565b9050600061439f6103e5614385868961442e565b90506143b0600161428683856150ad565b9695505050505050565b60008115806143de575082826143d081836151e1565b92506143dc90836150ad565b145b6143fa5760405162461bcd60e51b815260040161023790614c67565b92915050565b60008261440d8382615095565b91508110156143fa5760405162461bcd60e51b815260040161023790614c9e565b60008261443b8382615200565b91508111156143fa5760405162461bcd60e51b815260040161023790614bc2565b805161020f816152a1565b600082601f830112614477578081fd5b8135602061448c61448783615071565b615047565b82815281810190858301838502870184018810156144a8578586fd5b855b858110156144cf5781356144bd816152a1565b845292840192908401906001016144aa565b5090979650505050505050565b60008083601f8401126144ed578182fd5b50813567ffffffffffffffff811115614504578182fd5b6020830191508360208083028501011115612d4157600080fd5b60008083601f84011261452f578182fd5b50813567ffffffffffffffff811115614546578182fd5b602083019150836020828501011115612d4157600080fd5b80516dffffffffffffffffffffffffffff8116811461020f57600080fd5b60006020828403121561458d578081fd5b8151612ddb816152a1565b60008060008060008060008060a0898b0312156145b3578384fd5b88356145be816152a1565b975060208901356145ce816152a1565b9650604089013567ffffffffffffffff808211156145ea578586fd5b6145f68c838d016144dc565b909850965060608b013591508082111561460e578586fd5b61461a8c838d016144dc565b909650945060808b0135915080821115614632578384fd5b5061463f8b828c0161451e565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561466b578182fd5b8635614676816152a1565b95506020870135614686816152a1565b94506040870135935060608701359250608087013567ffffffffffffffff8111156146af578283fd5b6146bb89828a0161451e565b979a9699509497509295939492505050565b6000602082840312156146de578081fd5b81518015158114612ddb578182fd5b6000602082840312156146fe578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612ddb578182fd5b600080600060608486031215614741578081fd5b61474a8461455e565b92506147586020850161455e565b9150604084015163ffffffff81168114614770578182fd5b809150509250925092565b60006020828403121561478c578081fd5b5051919050565b600080604083850312156147a5578182fd5b8235915060208301356147b7816152a1565b809150509250929050565b600080604083850312156147d4578182fd5b8251915060208301516147b7816152a1565b600080600080608085870312156147fb578182fd5b8451935060208086015167ffffffffffffffff811115614819578384fd5b8601601f81018813614829578384fd5b805161483761448782615071565b81815283810190838501858402850186018c1015614853578788fd5b8794505b8385101561487e57805161486a816152a1565b835260019490940193918501918501614857565b5080975050505050506148936040860161445c565b6060959095015193969295505050565b600080600080608085870312156148b8578182fd5b84359350602085013567ffffffffffffffff8111156148d5578283fd5b6148e187828801614467565b93505060408501356148f2816152a1565b9396929550929360600135925050565b60008060408385031215614914578182fd5b8235915060208084013567ffffffffffffffff80821115614933578384fd5b818601915086601f830112614946578384fd5b8135818111156149585761495861528b565b61496a84601f19601f84011601615047565b9150808252878482850101111561497f578485fd5b8084840185840137810190920192909252919491935090915050565b600080600080600060a086880312156149b2578283fd5b8535945060208601359350604086013567ffffffffffffffff8111156149d6578384fd5b6149e288828901614467565b93505060608601356149f3816152a1565b949793965091946080013592915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251614a50818460208701615217565b9190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015614b7e57835183529284019291840191600101614b62565b50909695505050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526016908201527f4558434553534956455f494e5055545f414d4f554e5400000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252602a908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4f555460408201527f5055545f414d4f554e5400000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a20494e56414c49445f5041544800000000604082015260600190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f494e53554646494349454e545f4f55545055545f414d4f554e54000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b60008582528460208301526001600160a01b03841660408301526080606083015282518060808401526150308160a0850160208701615217565b601f01601f19169190910160a00195945050505050565b60405181810167ffffffffffffffff811182821017156150695761506961528b565b604052919050565b600067ffffffffffffffff82111561508b5761508b61528b565b5060209081020190565b600082198211156150a8576150a8615275565b500190565b6000826150c857634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116150df575061510a565b8187048211156150f1576150f1615275565b808616156150fe57918102915b9490941c9380026150d0565b94509492505050565b6000612ddb600019848460008261512c57506001612ddb565b8161513957506000612ddb565b816001811461514f576002811461515957615186565b6001915050612ddb565b60ff84111561516a5761516a615275565b6001841b91508482111561518057615180615275565b50612ddb565b5060208310610133831016604e8410600b84101617156151b9575081810a838111156151b4576151b4615275565b612ddb565b6151c684848460016150cd565b8086048211156151d8576151d8615275565b02949350505050565b60008160001904831182151516156151fb576151fb615275565b500290565b60008282101561521257615212615275565b500390565b60005b8381101561523257818101518382015260200161521a565b83811115612c255750506000910152565b60008161525257615252615275565b506000190190565b600060001982141561526e5761526e615275565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146152b657600080fd5b5056fea26469706673582212202c7380dd619a0d52a6c7a8b8c79a1218838902a4c693ddafa9e09a21d681b5ee64736f6c63430008000033",
          "sourceMap": "437:16944:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17265:114;;;;;;;;;;-1:-1:-1;17265:114:4;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7751:1106;;;;;;;;;;-1:-1:-1;7751:1106:4;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1232:1712::-;;;;;;;;;;-1:-1:-1;1232:1712:4;;;;;:::i;:::-;;:::i;6419:1322::-;;;;;;;;;;-1:-1:-1;6419:1322:4;;;;;:::i;:::-;;:::i;4842:1568::-;;;;;;:::i;:::-;;:::i;2950:1881::-;;;;;;;;;;-1:-1:-1;2950:1881:4;;;;;:::i;:::-;;:::i;17041:214::-;;;;;;;;;;-1:-1:-1;17041:214:4;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15935:1100::-;;;;;;;;;;-1:-1:-1;15935:1100:4;;;;;:::i;:::-;;:::i;1992:184:2:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8867:1668:4:-;;;;;;:::i;:::-;;:::i;17265:114::-;17344:4;17265:114;;;;:::o;7751:1106::-;7945:21;7926:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;;;;;;;;;7978:15:4::1;8033:4;-1:-1:-1::0;;;;;8004:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7978:72;;8060:20;8120:4;-1:-1:-1::0;;;;;8091:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8060:82;;8152:10;8199:4;-1:-1:-1::0;;;;;8170:54:4::1;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8152:75;;8238:77;8270:4;8275:1;8270:7;;;;;;-1:-1:-1::0;;;8270:7:4::1;;;;;;;;;;;;;;;8279:10;8299:4;8306:8;8238:31;:77::i;:::-;8356:43;8367:4;8372:1;8367:7;;;;;;-1:-1:-1::0;;;8367:7:4::1;;;;;;;;;;;;;;;8376:8;8386:12;8356:10;:43::i;:::-;8335:4;8340:1;8335:7;;;;;;-1:-1:-1::0;;;8335:7:4::1;;;;;;;;;;;;;;8334:65;;;;-1:-1:-1::0;;;;;8334:65:4::1;-1:-1:-1::0;;;;;8334:65:4::1;;;::::0;::::1;;8428:53;8457:7;8466:8;8476:4;8428:28;:53::i;:::-;8418:63;;8530:12;8499:7;8524:1;8507:7;:14;:18;;;;:::i;:::-;8499:27;;;;;;-1:-1:-1::0;;;8499:27:4::1;;;;;;;;;;;;;;;:43;;8491:82;;;;-1:-1:-1::0;;;8491:82:4::1;;;;;;;:::i;:::-;8592:121;8633:4;8638:1;8633:7;;;;;;-1:-1:-1::0;;;8633:7:4::1;;;;;;;;;;;;;;;8642:49;8665:7;8674:4;8679:1;8674:7;;;;;;-1:-1:-1::0;;;8674:7:4::1;;;;;;;;;;;;;;;8683:4;8688:1;8683:7;;;;;;-1:-1:-1::0;;;8683:7:4::1;;;;;;;;;;;;;;;8642:22;:49::i;:::-;8693:7;8701:1;8693:10;;;;;;-1:-1:-1::0;;;8693:10:4::1;;;;;;;;;;;;;;;8592:27;:121::i;:::-;8732:44;8738:7;8747;8756:4;8770;8732:5;:44::i;:::-;8786:64;8797:5;8804:7;8829:1;8812:7;:14;:18;;;;:::i;:::-;8804:27;;;;;;-1:-1:-1::0;;;8804:27:4::1;;;;;;;;;;;;;;;8833:12;8847:2;8786:10;:64::i;:::-;500:1:2;;;7751:1106:4::0;;;;;;;;:::o;1232:1712::-;1429:21;1410:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;1471:15:4::1;1526:4;-1:-1:-1::0;;;;;1497:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1471:72;;1553:19;1612:4;-1:-1:-1::0;;;;;1583:47:4::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1553:80;;1643:20;1703:4;-1:-1:-1::0;;;;;1674:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1643:82;;1736:77;1768:4;1773:1;1768:7;;;;;;-1:-1:-1::0;;;1768:7:4::1;;;;;;;;1736:77;1854:43;1865:4;1870:1;1865:7;;;;;;-1:-1:-1::0;;;1865:7:4::1;;;;;;;;;;;;;;;1874:8;1884:12;1854:10;:43::i;:::-;1833:4;1838:1;1833:7;;;;;;-1:-1:-1::0;;;1833:7:4::1;;;;;;;;;;;;;;1832:65;;;;-1:-1:-1::0;;;;;1832:65:4::1;-1:-1:-1::0;;;;;1832:65:4::1;;;::::0;::::1;;1916:15;1941:11:::0;1962:16:::1;2020:47;2031:4;2050:1;2036:4;:11;:15;;;;:::i;:::-;2031:21;;;;;;-1:-1:-1::0;;;2031:21:4::1;;;;;;;;;;;;;;;2054:12;2020:10;:47::i;:::-;1997:70:::0;;-1:-1:-1;1997:70:4;-1:-1:-1;2090:11:4;::::1;:51:::0;::::1;;;;2120:4;2139:1;2125:4;:11;:15;;;;:::i;:::-;2120:21;;;;;;-1:-1:-1::0;;;2120:21:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;2105:36:4::1;:11;-1:-1:-1::0;;;;;2105:36:4::1;;;2090:51;2086:280;;;2168:4;2187:1;2173:4;:11;:15;;;;:::i;:::-;2168:21;;;;;;-1:-1:-1::0;;;2168:21:4::1;;;;;;;;;;;;;;;2157:32;;2218:37;2232:8;2242:12;2218:13;:37::i;:::-;2301:53;::::0;;;;2203:52;;-1:-1:-1;;;;;;2301:45:4;::::1;::::0;::::1;::::0;:53:::1;::::0;2347:6;;2301:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2269:4;2288:1;2274:4;:11;:15;;;;:::i;:::-;2269:21;;;;;;-1:-1:-1::0;;;2269:21:4::1;;;;;;;;;;;;;;:86;-1:-1:-1::0;;;;;2269:86:4::1;;;-1:-1:-1::0;;;;;2269:86:4::1;;;::::0;::::1;2086:280;2394:53;2423:7;2432:8;2442:4;2394:28;:53::i;:::-;2384:63;;2496:12;2465:7;2490:1;2473:7;:14;:18;;;;:::i;:::-;2465:27;;;;;;-1:-1:-1::0;;;2465:27:4::1;;;;;;;;;;;;;;;:43;;2457:82;;;;-1:-1:-1::0;;;2457:82:4::1;;;;;;;:::i;:::-;2558:121;2599:4;2604:1;2599:7;;;;;;-1:-1:-1::0;;;2599:7:4::1;;;;;;;;;;;;;;;2608:49;2631:7;2640:4;2645:1;2640:7;;;;;;-1:-1:-1::0;;;2640:7:4::1;;;;;;;;;;;;;;;2649:4;2654:1;2649:7;;;;;;-1:-1:-1::0;;;2649:7:4::1;;;;;;;;2608:49;2659:7;2667:1;2659:10;;;;;;-1:-1:-1::0;;;2659:10:4::1;;;;;;;;2558:121;2702:10;2698:240;;;2728:33;2734:7;2743;2752:4;2758:2;2728:5;:33::i;:::-;2698:240;;;2792:44;2798:7;2807;2816:4;2830;2792:5;:44::i;:::-;2850:77;2863:6;2871:8;2881:7;2906:1;2889:7;:14;:18;;;;:::i;:::-;2881:27;;;;;;-1:-1:-1::0;;;2881:27:4::1;;;;;;;;;;;;;;;2910:12;2924:2;2850:12;:77::i;:::-;500:1:2;;;;;;1232:1712:4::0;;;;;;;;:::o;6419:1322::-;6613:21;6594:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;6646:15:4::1;6701:4;-1:-1:-1::0;;;;;6672:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6646:72;;6728:20;6788:4;-1:-1:-1::0;;;;;6759:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6728:82;;6820:10;6867:4;-1:-1:-1::0;;;;;6838:54:4::1;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6820:75;;6914:13;6930:4;6935:1;6930:7;;;;;;-1:-1:-1::0;;;6930:7:4::1;;;;;;;;;;;;;;;6914:23;;6981:12;-1:-1:-1::0;;;;;6965:45:4::1;;7027:12;-1:-1:-1::0;;;;;7011:36:4::1;;7048:4;7053:1;7048:7;;;;;;-1:-1:-1::0;;;7048:7:4::1;;;;;;;;;;;;;;;7011:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6965:92;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6947:4;6952:1;6947:7;;;;;;-1:-1:-1::0;;;6947:7:4::1;;;;;;;;;;;;;;:111;-1:-1:-1::0;;;;;6947:111:4::1;;;-1:-1:-1::0;;;;;6947:111:4::1;;;::::0;::::1;7079:53;7107:7;7116:9;7127:4;7079:27;:53::i;:::-;7069:63;;7190:4;7195:1;7190:7;;;;;;-1:-1:-1::0;;;7190:7:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;7179:28:4::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7174:35;::::0;:2:::1;:35;:::i;:::-;7169:41;::::0;:2:::1;:41;:::i;:::-;7155:7;7163:1;7155:10;;;;;;-1:-1:-1::0;;;7155:10:4::1;;;;;;;;;;;;;;;:56;;;;:::i;:::-;:60;::::0;7214:1:::1;7155:60;:::i;:::-;7142:7;7150:1;7142:10;;;;;;-1:-1:-1::0;;;7142:10:4::1;;;;;;;;;;;;;;:73;;;::::0;::::1;7252:11;7238:7;7246:1;7238:10;;;;;;-1:-1:-1::0;;;7238:10:4::1;;;;;;;;;;;;;;;:25;;7230:60;;;;-1:-1:-1::0;;;7230:60:4::1;;;;;;;:::i;:::-;7301:77;7333:5;7340:10;7360:4;7367:7;7375:1;7367:10;;;;;;-1:-1:-1::0;;;7367:10:4::1;;;;;;;;;;;;;;;7301:31;:77::i;:::-;7414:43;7425:5;7432:7;7440:1;7432:10;;;;;;-1:-1:-1::0;;;7432:10:4::1;;;;;;;;;;;;;;;7444:12;7414:10;:43::i;:::-;7397:60;;7400:7;7408:1;7400:10;;;;;;-1:-1:-1::0;;;7400:10:4::1;;;;;;;;;;;;;;7397:60;;;::::0;::::1;7476:121;7517:4;7522:1;7517:7;;;;;;-1:-1:-1::0;;;7517:7:4::1;;;;;;;;;;;;;;;7526:49;7549:7;7558:4;7563:1;7558:7;;;;;;-1:-1:-1::0;;;7558:7:4::1;;;;;;;;;;;;;;;7567:4;7572:1;7567:7;;;;;;-1:-1:-1::0;;;7567:7:4::1;;;;;;;;7526:49;7577:7;7585:1;7577:10;;;;;;-1:-1:-1::0;;;7577:10:4::1;;;;;;;;7476:121;7616:44;7622:7;7631;7640:4;7654;7616:5;:44::i;:::-;7670:64;7681:5;7688:7;7713:1;7696:7;:14;:18;;;;:::i;:::-;7688:27;;;;;;-1:-1:-1::0;;;7688:27:4::1;;;;;;;;;;;;;;;7717:12;7731:2;7670:10;:64::i;:::-;500:1:2;;;;6419:1322:4::0;;;;;;;;:::o;4842:1568::-;5021:21;4994:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;5054:15:4::1;5109:4;-1:-1:-1::0;;;;;5080:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5054:72;;5136:19;5195:4;-1:-1:-1::0;;;;;5166:47:4::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5136:80;;5226:20;5286:4;-1:-1:-1::0;;;;;5257:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5226:82;;5329:33;5338:9;5349:12;5329:8;:33::i;:::-;5319:4;5324:1;5319:7;;;;;;-1:-1:-1::0;;;5319:7:4::1;;;;;;;;;;;;;;:43;-1:-1:-1::0;;;;;5319:43:4::1;;;-1:-1:-1::0;;;;;5319:43:4::1;;;::::0;::::1;5381:15;5406:11:::0;5427:16:::1;5485:47;5496:4;5515:1;5501:4;:11;:15;;;;:::i;5485:47::-;5462:70:::0;;-1:-1:-1;5462:70:4;-1:-1:-1;5555:11:4;::::1;:51:::0;::::1;;;;5585:4;5604:1;5590:4;:11;:15;;;;:::i;:::-;5585:21;;;;;;-1:-1:-1::0;;;5585:21:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5570:36:4::1;:11;-1:-1:-1::0;;;;;5570:36:4::1;;;5555:51;5551:280;;;5633:4;5652:1;5638:4;:11;:15;;;;:::i;:::-;5633:21;;;;;;-1:-1:-1::0;;;5633:21:4::1;;;;;;;;;;;;;;;5622:32;;5683:37;5697:8;5707:12;5683:13;:37::i;:::-;5766:53;::::0;;;;5668:52;;-1:-1:-1;;;;;;5766:45:4;::::1;::::0;::::1;::::0;:53:::1;::::0;5812:6;;5766:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5734:4;5753:1;5739:4;:11;:15;;;;:::i;:::-;5734:21;;;;;;-1:-1:-1::0;;;5734:21:4::1;;;;;;;;;;;;;;:86;-1:-1:-1::0;;;;;5734:86:4::1;;;-1:-1:-1::0;;;;;5734:86:4::1;;;::::0;::::1;5551:280;5859:54;5888:7;5897:9;5908:4;5859:28;:54::i;:::-;5849:64;;5962:12;5931:7;5956:1;5939:7;:14;:18;;;;:::i;:::-;5931:27;;;;;;-1:-1:-1::0;;;5931:27:4::1;;;;;;;;;;;;;;;:43;;5923:82;;;;-1:-1:-1::0;;;5923:82:4::1;;;;;;;:::i;:::-;6024:121;6065:4;6070:1;6065:7;;;;;;-1:-1:-1::0;;;6065:7:4::1;;;;;;;;6024:121;6168:10;6164:240;;;6194:33;6200:7;6209;6218:4;6224:2;6194:5;:33::i;:::-;6164:240;;;6258:44;6264:7;6273;6282:4;6296;6258:5;:44::i;:::-;6316:77;6329:6;6337:8;6347:7;6372:1;6355:7;:14;:18;;;;:::i;6316:77::-;500:1:2;;;;;;4842:1568:4::0;;;;;;;:::o;2950:1881::-;3147:21;3128:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;3189:15:4::1;3244:4;-1:-1:-1::0;;;;;3215:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3189:72;;3271:20;3331:4;-1:-1:-1::0;;;;;3302:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3271:82;;3372:15;3390:4;3395:1;3390:7;;;;;;-1:-1:-1::0;;;3390:7:4::1;;;;;;;;;;;;;;;3372:25;;3441:12;-1:-1:-1::0;;;;;3425:45:4::1;;3487:12;-1:-1:-1::0;;;;;3471:36:4::1;;3508:4;3513:1;3508:7;;;;;;-1:-1:-1::0;;;3508:7:4::1;;;;;;;;;;;;;;;3471:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3425:92;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3407:4;3412:1;3407:7;;;;;;-1:-1:-1::0;;;3407:7:4::1;;;;;;;;;;;;;;:111;-1:-1:-1::0;;;;;3407:111:4::1;;;-1:-1:-1::0;;;;;3407:111:4::1;;;::::0;::::1;3537:15;3562:11:::0;3606:47:::1;3617:4;3636:1;3622:4;:11;:15;;;;:::i;3606:47::-;3583:70:::0;;-1:-1:-1;3583:70:4;-1:-1:-1;3663:16:4::1;3702:11:::0;::::1;:98:::0;::::1;;;;3779:4;3798:1;3784:4;:11;:15;;;;:::i;:::-;3779:21;;;;;;-1:-1:-1::0;;;3779:21:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;3717:83:4::1;3754:4;-1:-1:-1::0;;;;;3725:47:4::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3717:83:4::1;;;3702:98;3698:322;;;3827:4;3846:1;3832:4;:11;:15;;;;:::i;:::-;3827:21;;;;;;-1:-1:-1::0;;;3827:21:4::1;;;;;;;;;;;;;;;3816:32;;3875:34;3889:8;3899:9;3875:13;:34::i;:::-;3955:53;::::0;;;;3862:47;;-1:-1:-1;;;;;;3955:45:4;::::1;::::0;::::1;::::0;:53:::1;::::0;4001:6;;3955:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3923:4;3942:1;3928:4;:11;:15;;;;:::i;:::-;3923:21;;;;;;-1:-1:-1::0;;;3923:21:4::1;;;;;;;;;;;;;;:86;-1:-1:-1::0;;;;;3923:86:4::1;;;-1:-1:-1::0;;;;;3923:86:4::1;;;::::0;::::1;3698:322;4040:53;4068:7;4077:9;4088:4;4040:27;:53::i;:::-;4030:63;;4151:7;-1:-1:-1::0;;;;;4140:28:4::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4135:35;::::0;:2:::1;:35;:::i;:::-;4130:41;::::0;:2:::1;:41;:::i;:::-;4116:7;4124:1;4116:10;;;;;;-1:-1:-1::0;;;4116:10:4::1;;;;;;;;;;;;;;;:56;;;;:::i;:::-;:60;::::0;4175:1:::1;4116:60;:::i;:::-;4103:7;4111:1;4103:10;;;;;;-1:-1:-1::0;;;4103:10:4::1;;;;;;;;;;;;;;:73;;;::::0;::::1;4209:11;4195:7;4203:1;4195:10;;;;;;-1:-1:-1::0;;;4195:10:4::1;;;;;;;;;;;;;;;:25;;4187:60;;;;-1:-1:-1::0;;;4187:60:4::1;;;;;;;:::i;:::-;4266:79;4298:7;4307:10;4327:4;4334:7;4342:1;4334:10;;;;;;-1:-1:-1::0;;;4334:10:4::1;;;;;;;;4266:79;4381:45;4392:7;4401;4409:1;4401:10;;;;;;-1:-1:-1::0;;;4401:10:4::1;;;;;;;;;;;;;;;4413:12;4381:10;:45::i;:::-;4364:62;;4367:7;4375:1;4367:10;;;;;;-1:-1:-1::0;;;4367:10:4::1;;;;;;;;;;;;;;4364:62;;;::::0;::::1;4445:121;4486:4;4491:1;4486:7;;;;;;-1:-1:-1::0;;;4486:7:4::1;;;;;;;;4445:121;4589:10;4585:240;;;4615:33;4621:7;4630;4639:4;4645:2;4615:5;:33::i;4585:240::-;4679:44;4685:7;4694;4703:4;4717;4679:5;:44::i;:::-;4737:77;4750:6;4758:8;4768:7;4793:1;4776:7;:14;:18;;;;:::i;:::-;4768:27;;;;;;-1:-1:-1::0;;;4768:27:4::1;;;;;;;;;;;;;;;4797:12;4811:2;4737:12;:77::i;17041:214::-:0;17222:6;17240:8;;;15935:1100;16094:6;;;16157:21;16094:6;;16157:21;16339:31;;;;16350:4;16339:31;:::i;:::-;16415:53;;16316:54;;-1:-1:-1;16316:54:4;-1:-1:-1;16415:53:4;;;;;;;;;;;;:::i;:::-;16384:84;;-1:-1:-1;16384:84:4;;-1:-1:-1;16384:84:4;-1:-1:-1;16384:84:4;-1:-1:-1;16505:31:4;;-1:-1:-1;16525:10:4;16505:19;:31::i;:::-;:36;:61;;16561:5;16505:61;;;16544:14;:5;16552:6;16544:14;:::i;:::-;16497:69;;16589:9;16602:1;16589:14;16585:386;;;16605:58;16629:5;16636:6;16644:4;16650:2;16654:8;16605:23;:58::i;:::-;16585:386;;;16682:9;16695:1;16682:14;16678:293;;;16698:64;16722:6;16730:5;16737:4;16743:2;16747:4;16753:8;16698:23;:64::i;16678:293::-;16781:9;16794:1;16781:14;16777:194;;;16797:55;16818:5;16825:6;16833:4;16839:2;16843:8;16797:20;:55::i;16777:194::-;16871:9;16884:1;16871:14;16867:104;;;16887:61;16908:6;16916:5;16923:4;16929:2;16933:4;16939:8;16887:20;:61::i;16867:104::-;-1:-1:-1;16997:31:4;;15935:1100;-1:-1:-1;;;;;;;;;;;15935:1100:4:o;1992:184:2:-;2067:21;2136:7;-1:-1:-1;;;;;2120:32:2;;2160:6;2120:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2100:69;1992:184;-1:-1:-1;;;;1992:184:2:o;8867:1668:4:-;9043:21;9024:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;9076:15:4::1;9131:4;-1:-1:-1::0;;;;;9102:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9076:72;;9158:20;9218:4;-1:-1:-1::0;;;;;9189:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9158:82;;9250:19;9309:4;-1:-1:-1::0;;;;;9280:47:4::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9250:80;;9349:15;9374:11:::0;9395:16:::1;9453:47;9464:4;9483:1;9469:4;:11;:15;;;;:::i;:::-;9464:21;;;;;;-1:-1:-1::0;;;9464:21:4::1;;;;;;;;;;;;;;;9487:12;9453:10;:47::i;:::-;9430:70:::0;;-1:-1:-1;9430:70:4;-1:-1:-1;9523:11:4;::::1;:51:::0;::::1;;;;9553:4;9572:1;9558:4;:11;:15;;;;:::i;:::-;9553:21;;;;;;-1:-1:-1::0;;;9553:21:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;9538:36:4::1;:11;-1:-1:-1::0;;;;;9538:36:4::1;;;9523:51;9519:274;;;9601:4;9620:1;9606:4;:11;:15;;;;:::i;:::-;9601:21;;;;;;-1:-1:-1::0;;;9601:21:4::1;;;;;;;;;;;;;;;9590:32;;9648:34;9662:8;9672:9;9648:13;:34::i;:::-;9728:53;::::0;;;;9636:46;;-1:-1:-1;;;;;;9728:45:4;::::1;::::0;::::1;::::0;:53:::1;::::0;9774:6;;9728:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9696:4;9715:1;9701:4;:11;:15;;;;:::i;:::-;9696:21;;;;;;-1:-1:-1::0;;;9696:21:4::1;;;;;;;;;;;;;;:86;-1:-1:-1::0;;;;;9696:86:4::1;;;-1:-1:-1::0;;;;;9696:86:4::1;;;::::0;::::1;9519:274;9821:53;9849:7;9858:9;9869:4;9821:27;:53::i;:::-;9811:63;;9906:9;9892:7;9900:1;9892:10;;;;;;-1:-1:-1::0;;;9892:10:4::1;;;;;;;;;;;;;;;:23;;9884:58;;;;-1:-1:-1::0;;;9884:58:4::1;;;;;;;:::i;:::-;9971:34;9980:7;9988:1;9980:10;;;;;;-1:-1:-1::0;;;9980:10:4::1;;;;;;;;;;;;;;;9992:12;9971:8;:34::i;:::-;9961:4;9966:1;9961:7;;;;;;-1:-1:-1::0;;;9961:7:4::1;;;;;;;;;;;;;;:44;-1:-1:-1::0;;;;;9961:44:4::1;;;-1:-1:-1::0;;;;;9961:44:4::1;;;::::0;::::1;10024:121;10065:4;10070:1;10065:7;;;;;;-1:-1:-1::0;;;10065:7:4::1;;;;;;;;10024:121;10168:10;10164:240;;;10194:33;10200:7;10209;10218:4;10224:2;10194:5;:33::i;:::-;10164:240;;;10258:44;10264:7;10273;10282:4;10296;10258:5;:44::i;:::-;10316:77;10329:6;10337:8;10347:7;10372:1;10355:7;:14;:18;;;;:::i;10316:77::-;10438:7;10446:1;10438:10;;;;;;-1:-1:-1::0;;;10438:10:4::1;;;;;;;;;;;;;;;10426:9;:22;10422:106;;;10462:66;10493:10;10517:7;10525:1;10517:10;;;;;;-1:-1:-1::0;;;10517:10:4::1;;;;;;;;;;;;;;;10505:9;:22;;;;:::i;:::-;10462:30;:66::i;1001:439:36:-:0;1219:12;1233:17;1254:5;-1:-1:-1;;;;;1254:10:36;1288;1300:4;1306:2;1310:5;1265:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1254:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:99;;;;1335:7;:57;;;;-1:-1:-1;1347:11:36;;:16;;:44;;;1378:4;1367:24;;;;;;;;;;;;:::i;:::-;1327:106;;;;-1:-1:-1;;;1327:106:36;;;;;;;:::i;:::-;1001:439;;;;;;:::o;907:529:2:-;1023:21;1046:17;1129:6;1086:5;-1:-1:-1;;;;;1079:23:2;;1111:4;1118:7;1079:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;1075:136;;;1151:49;;;;;-1:-1:-1;;;;;1151:21:2;;;;;:49;;1173:7;;-1:-1:-1;;1182:17:2;1151:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1075:136;1238:44;;;;;1222:10;;-1:-1:-1;;;;;1238:29:2;;;;;:44;;1268:5;;1275:6;;1238:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1336:44:2;;;;;1221:61;;-1:-1:-1;;;;;;1336:40:2;;;;;:44;;1221:61;;1336:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1305:124;;;;;1312:69;;-1:-1:-1;;;;;;1305:87:2;;;;;:124;;1414:4;;1305:124;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1293:136;;907:529;;;;;;;:::o;3804:549:32:-;3938:24;3997:1;3982:4;:11;:16;;3974:57;;;;-1:-1:-1;;;3974:57:32;;;;;;;:::i;:::-;4065:4;:11;4051:26;;;;;;-1:-1:-1;;;4051:26:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4051:26:32;;4041:36;;4100:8;4087:7;4095:1;4087:10;;;;;;-1:-1:-1;;;4087:10:32;;;;;;;;;;;;;;:21;;;;;4123:9;4118:229;4152:1;4138:4;:11;:15;;;;:::i;:::-;4134:1;:19;4118:229;;;4175:17;4194:18;4216:42;4228:7;4237:4;4242:1;4237:7;;;;;;-1:-1:-1;;;4237:7:32;;;;;;;;;;;;;;;4246:4;4251:1;4255;4251:5;;;;:::i;:::-;4246:11;;;;;;-1:-1:-1;;;4246:11:32;;;;;;;;;;;;;;;4216;:42::i;:::-;4174:84;;;;4289:47;4302:7;4310:1;4302:10;;;;;;-1:-1:-1;;;4302:10:32;;;;;;;;;;;;;;;4314:9;4325:10;4289:12;:47::i;:::-;4272:7;4280:5;:1;4284;4280:5;:::i;:::-;4272:14;;;;;;-1:-1:-1;;;4272:14:32;;;;;;;;;;;;;;:64;;;;;4118:229;;4155:3;;;;;:::i;:::-;;;;4118:229;;;;3804:549;;;;;:::o;764:708::-;883:12;908:14;924;942:26;953:6;961;942:10;:26::i;:::-;907:61;;;;1178:7;1242:6;1250;1225:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1215:43;;;;;;1095:306;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1095:306:32;;;;;;;;;1060:363;;1095:306;1060:363;;;;;764:708;-1:-1:-1;;;;;;764:708:32:o;605:390:36:-;785:12;799:17;820:5;-1:-1:-1;;;;;820:10:36;854;866:2;870:5;831:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:93;;;;895:7;:57;;;;-1:-1:-1;907:11:36;;:16;;:44;;;938:4;927:24;;;;;;;;;;;;:::i;:::-;887:101;;;;-1:-1:-1;;;887:101:36;;;;;;;:::i;:::-;605:390;;;;;:::o;487:733:4:-;610:6;605:609;636:1;622:4;:11;:15;;;;:::i;:::-;618:1;:19;605:609;;;659:13;674:14;693:4;698:1;693:7;;;;;;-1:-1:-1;;;693:7:4;;;;;;;;;;;;;;;702:4;707:1;711;707:5;;;;:::i;:::-;702:11;;;;;;-1:-1:-1;;;702:11:4;;;;;;;;;;;;;;;658:56;;;;729:14;748:40;774:5;781:6;748:25;:40::i;:::-;-1:-1:-1;728:60:4;-1:-1:-1;802:14:4;819:7;827:5;:1;831;827:5;:::i;:::-;819:14;;;;;;-1:-1:-1;;;819:14:4;;;;;;;;;;;;;;;802:31;;848:15;865;893:6;-1:-1:-1;;;;;884:15:4;:5;-1:-1:-1;;;;;884:15:4;;:61;;926:9;942:1;884:61;;;908:1;912:9;884:61;847:98;;;;959:10;990:1;976:4;:11;:15;;;;:::i;:::-;972:1;:19;:80;;1049:3;972:80;;;994:52;1017:7;1026:6;1034:4;1039:5;:1;1043;1039:5;:::i;:::-;1034:11;;;;;;-1:-1:-1;;;1034:11:4;;;;;;;;994:52;959:93;;1079:46;1102:7;1111:5;1118:6;1079:22;:46::i;:::-;-1:-1:-1;;;;;1066:65:4;;1149:10;1161;1173:2;1187:1;1177:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1177:12:4;;1066:137;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;605:609;;;;;;;639:3;;;;;:::i;:::-;;;;605:609;;1752:234:2;1886:41;;;;;-1:-1:-1;;;;;1886:29:2;;;;;:41;;1916:2;;1920:6;;1886:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1937:42;1968:2;1972:6;1937:30;:42::i;:::-;1752:234;;;;:::o;583:318::-;658:12;672:10;729:5;-1:-1:-1;;;;;698:51:2;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;698:53:2;;;;;;;;-1:-1:-1;;698:53:2;;;;;;;;;;;;:::i;:::-;;;694:201;;846:38;;;;;822:5;;-1:-1:-1;;;;;;846:31:2;;;;;:38;;878:5;;846:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;841:43;;694:201;;;;776:4;766:14;;694:201;583:318;;;;;:::o;2182:175::-;2259:17;2331:5;-1:-1:-1;;;;;2320:26:2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2315:33;;:2;:33;:::i;:::-;2310:39;;:2;:39;:::i;:::-;2300:50;;:6;:50;:::i;:::-;2288:62;2182:175;-1:-1:-1;;;2182:175:2:o;1442:304::-;1604:41;;;;;-1:-1:-1;;;;;1604:29:2;;;;;:41;;1634:2;;1638:6;;1604:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1655:84;1683:8;1693:2;1704:8;-1:-1:-1;;;;;1697:26:2;;1732:4;1697:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1655:27;:84::i;4431:570:32:-;4565:24;4624:1;4609:4;:11;:16;;4601:57;;;;-1:-1:-1;;;4601:57:32;;;;;;;:::i;:::-;4692:4;:11;4678:26;;;;;;-1:-1:-1;;;4678:26:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4678:26:32;;4668:36;;4744:9;4714:7;4739:1;4722:7;:14;:18;;;;:::i;:::-;4714:27;;;;;;-1:-1:-1;;;4714:27:32;;;;;;;;;;;;;;:39;;;;;4768:9;4794:1;4780:4;:11;:15;;;;:::i;:::-;4768:27;;4763:232;4797:5;;4763:232;;4824:17;;4865:42;4877:7;4886:4;4891:5;4895:1;4891;:5;:::i;:::-;4886:11;;;;;;-1:-1:-1;;;4886:11:32;;;;;;;;;;;;;;;4899:4;4904:1;4899:7;;;;;;-1:-1:-1;;;4899:7:32;;;;;;;;4865:42;4823:84;;;;4938:46;4950:7;4958:1;4950:10;;;;;;-1:-1:-1;;;4950:10:32;;;;;;;;;;;;;;;4962:9;4973:10;4938:11;:46::i;:::-;4921:7;4929:5;4933:1;4929;:5;:::i;:::-;4921:14;;;;;;-1:-1:-1;;;4921:14:32;;;;;;;;;;;;;;:63;;;;;4763:232;;4804:3;;;;;:::i;:::-;;;;4763:232;;2909:290:2;3005:7;3042:10;-1:-1:-1;;;;;3032:30:2;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:32:2;;;;;;;;-1:-1:-1;;3032:32:2;;;;;;;;;;;;:::i;:::-;;;3028:165;;-1:-1:-1;3180:2:2;3173:9;;3028:165;3113:8;3125:1;3113:13;:28;;3133:8;3113:28;;;3129:1;3113:28;3106:35;;;;;10545:1462:4;10723:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;10743:15:4::1;10798:4;-1:-1:-1::0;;;;;10769:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10743:72;;10825:20;10885:4;-1:-1:-1::0;;;;;10856:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10825:82;;10918:15;10943:11:::0;10964:16:::1;11022:47;11033:4;11052:1;11038:4;:11;:15;;;;:::i;11022:47::-;10999:70:::0;;-1:-1:-1;10999:70:4;-1:-1:-1;11092:11:4;::::1;:98:::0;::::1;;;;11169:4;11188:1;11174:4;:11;:15;;;;:::i;:::-;11169:21;;;;;;-1:-1:-1::0;;;11169:21:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11107:83:4::1;11144:4;-1:-1:-1::0;;;;;11115:47:4::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11107:83:4::1;;;11092:98;11088:327;;;11217:4;11236:1;11222:4;:11;:15;;;;:::i;:::-;11217:21;;;;;;-1:-1:-1::0;;;11217:21:4::1;;;;;;;;;;;;;;;11206:32;;11267:37;11281:8;11291:12;11267:13;:37::i;:::-;11350:53;::::0;;;;11252:52;;-1:-1:-1;;;;;;11350:45:4;::::1;::::0;::::1;::::0;:53:::1;::::0;11396:6;;11350:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11318:4;11337:1;11323:4;:11;:15;;;;:::i;:::-;11318:21;;;;;;-1:-1:-1::0;;;11318:21:4::1;;;;;;;;;;;;;;:86;-1:-1:-1::0;;;;;11318:86:4::1;;;-1:-1:-1::0;;;;;11318:86:4::1;;;::::0;::::1;11088:327;11433:21;11457:53;11486:7;11495:8;11505:4;11457:28;:53::i;:::-;11433:77;;11559:12;11528:7;11553:1;11536:7;:14;:18;;;;:::i;:::-;11528:27;;;;;;-1:-1:-1::0;;;11528:27:4::1;;;;;;;;;;;;;;;:43;;11520:82;;;;-1:-1:-1::0;;;11520:82:4::1;;;;;;;:::i;:::-;11621:121;11662:4;11667:1;11662:7;;;;;;-1:-1:-1::0;;;11662:7:4::1;;;;;;;;;;;;;;;11671:49;11694:7;11703:4;11708:1;11703:7;;;;;;-1:-1:-1::0;;;11703:7:4::1;;;;;;;;;;;;;;;11712:4;11717:1;11712:7;;;;;;-1:-1:-1::0;;;11712:7:4::1;;;;;;;;11671:49;11722:7;11730:1;11722:10;;;;;;-1:-1:-1::0;;;11722:10:4::1;;;;;;;;11621:121;11765:10;11761:240;;;11791:33;11797:7;11806;11815:4;11821:2;11791:5;:33::i;:::-;11761:240;;;11855:44;11861:7;11870;11879:4;11893;11855:5;:44::i;:::-;11913:77;11926:6;11934:8;11944:7;11969:1;11952:7;:14;:18;;;;:::i;:::-;11944:27;;;;;;-1:-1:-1::0;;;11944:27:4::1;;;;;;;;;;;;;;;11973:12;11987:2;11913:12;:77::i;:::-;500:1:2;;;;;;10545:1462:4::0;;;;;;:::o;12017:1635::-;12217:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;12237:15:4::1;12292:4;-1:-1:-1::0;;;;;12263:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12237:72;;12319:20;12379:4;-1:-1:-1::0;;;;;12350:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12319:82;;12412:15;12437:11:::0;12458:16:::1;12516:47;12527:4;12546:1;12532:4;:11;:15;;;;:::i;12516:47::-;12493:70:::0;;-1:-1:-1;12493:70:4;-1:-1:-1;12586:11:4;::::1;:98:::0;::::1;;;;12663:4;12682:1;12668:4;:11;:15;;;;:::i;:::-;12663:21;;;;;;-1:-1:-1::0;;;12663:21:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;12601:83:4::1;12638:4;-1:-1:-1::0;;;;;12609:47:4::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12601:83:4::1;;;12586:98;12582:321;;;12711:4;12730:1;12716:4;:11;:15;;;;:::i;:::-;12711:21;;;;;;-1:-1:-1::0;;;12711:21:4::1;;;;;;;;;;;;;;;12700:32;;12758:34;12772:8;12782:9;12758:13;:34::i;:::-;12838:53;::::0;;;;12746:46;;-1:-1:-1;;;;;;12838:45:4;::::1;::::0;::::1;::::0;:53:::1;::::0;12884:6;;12838:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12806:4;12825:1;12811:4;:11;:15;;;;:::i;:::-;12806:21;;;;;;-1:-1:-1::0;;;12806:21:4::1;;;;;;;;;;;;;;:86;-1:-1:-1::0;;;;;12806:86:4::1;;;-1:-1:-1::0;;;;;12806:86:4::1;;;::::0;::::1;12582:321;12921:21;12945:53;12973:7;12982:9;12993:4;12945:27;:53::i;:::-;12921:77;;13030:11;13016:7;13024:1;13016:10;;;;;;-1:-1:-1::0;;;13016:10:4::1;;;;;;;;;;;;;;;:25;;13008:60;;;;-1:-1:-1::0;;;13008:60:4::1;;;;;;;:::i;:::-;13097:15;13168:1:::0;13154:7:::1;13162:1;13154:10;;;;;;-1:-1:-1::0;;;13154:10:4::1;;;;;;;;;;;;;;;13140:11;:24;;;;:::i;:::-;13127:37;;;13126:43;13122:115;;;13183:54;13211:4;13216:1;13211:7;;;;;;-1:-1:-1::0;;;13211:7:4::1;;;;;;;;;;;;;;;13220:4;13226:10;13183:27;:54::i;:::-;500:1:2;13266:121:4;13307:4;13312:1;13307:7;;;;;;-1:-1:-1::0;;;13307:7:4::1;;;;;;;;;;;;;;;13316:49;13339:7;13348:4;13353:1;13348:7;;;;;;-1:-1:-1::0;;;13348:7:4::1;;;;;;;;13266:121;13410:10;13406:240;;;13436:33;13442:7;13451;13460:4;13466:2;13436:5;:33::i;:::-;13406:240;;;13500:44;13506:7;13515;13524:4;13538;13500:5;:44::i;:::-;13558:77;13571:6;13579:8;13589:7;13614:1;13597:7;:14;:18;;;;:::i;13558:77::-;500:1:2;;;;;;12017:1635:4::0;;;;;;;:::o;13662:1039::-;13837:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;13857:15:4::1;13912:4;-1:-1:-1::0;;;;;13883:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13857:72;;13939:20;13999:4;-1:-1:-1::0;;;;;13970:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13939:82;;14031:10;14078:4;-1:-1:-1::0;;;;;14049:54:4::1;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14031:75;;14117:21;14141:53;14170:7;14179:8;14189:4;14141:28;:53::i;:::-;14117:77;;14243:12;14212:7;14237:1;14220:7;:14;:18;;;;:::i;:::-;14212:27;;;;;;-1:-1:-1::0;;;14212:27:4::1;;;;;;;;;;;;;;;:43;;14204:82;;;;-1:-1:-1::0;;;14204:82:4::1;;;;;;;:::i;:::-;14305:121;14346:4;14351:1;14346:7;;;;;;-1:-1:-1::0;;;14346:7:4::1;;;;;;;;;;;;;;;14355:49;14378:7;14387:4;14392:1;14387:7;;;;;;-1:-1:-1::0;;;14387:7:4::1;;;;;;;;14305:121;14445:44;14451:7;14460;14469:4;14483;14445:5;:44::i;:::-;14524:12;-1:-1:-1::0;;;;;14508:34:4::1;;14556:5;14575:7;14600:1;14583:7;:14;:18;;;;:::i;:::-;14575:27;;;;;;-1:-1:-1::0;;;14575:27:4::1;;;;;;;;;;;;;;;14508:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14631:63;14662:2;14666:7;14691:1;14674:7;:14;:18;;;;:::i;:::-;14666:27;;;;;;-1:-1:-1::0;;;14666:27:4::1;;;;;;;;;;;;;;;14631:30;:63::i;:::-;500:1:2;;;;13662:1039:4::0;;;;;;:::o;14711:1218::-;14908:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;14928:15:4::1;14983:4;-1:-1:-1::0;;;;;14954:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14928:72;;15010:20;15070:4;-1:-1:-1::0;;;;;15041:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15010:82;;15102:10;15149:4;-1:-1:-1::0;;;;;15120:54:4::1;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15102:75;;15188:21;15212:53;15240:7;15249:9;15260:4;15212:27;:53::i;:::-;15188:77;;15297:11;15283:7;15291:1;15283:10;;;;;;-1:-1:-1::0;;;15283:10:4::1;;;;;;;;;;;;;;;:25;;15275:60;;;;-1:-1:-1::0;;;15275:60:4::1;;;;;;;:::i;:::-;15364:15;15435:1:::0;15421:7:::1;15429:1;15421:10;;;;;;-1:-1:-1::0;;;15421:10:4::1;;;;;;;;;;;;;;;15407:11;:24;;;;:::i;:::-;15394:37;;;15393:43;15389:115;;;15450:54;15478:4;15483:1;15478:7;;;;;;-1:-1:-1::0;;;15478:7:4::1;;;;;;;;;;;;;;;15487:4;15493:10;15450:27;:54::i;:::-;500:1:2;15533:121:4;15574:4;15579:1;15574:7;;;;;;-1:-1:-1::0;;;15574:7:4::1;;;;;;;;;;;;;;;15583:49;15606:7;15615:4;15620:1;15615:7;;;;;;-1:-1:-1::0;;;15615:7:4::1;;;;;;;;15533:121;15673:44;15679:7;15688;15697:4;15711;15673:5;:44::i;:::-;15752:12;-1:-1:-1::0;;;;;15736:34:4::1;;15784:5;15803:7;15828:1;15811:7;:14;:18;;;;:::i;:::-;15803:27;;;;;;-1:-1:-1::0;;;15803:27:4::1;;;;;;;;;;;;;;;15736:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15859:63;15890:2;15894:7;15919:1;15902:7;:14;:18;;;;:::i;15859:63::-;500:1:2;;;;14711:1218:4::0;;;;;;;:::o;1446:197:36:-;1558:12;;;1518;1558;;;;;;;;;-1:-1:-1;;;;;1536:7:36;;;1551:5;;1536:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:54;;;1589:7;1581:55;;;;-1:-1:-1;;;1581:55:36;;;;;;;:::i;:::-;1446:197;;;:::o;1527:429:32:-;1650:16;1668;1697:14;1717:26;1728:6;1736;1717:10;:26::i;:::-;1696:47;;;1754:16;1772;1807:32;1815:7;1824:6;1832;1807:7;:32::i;:::-;-1:-1:-1;;;;;1794:58:32;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1753:101;;;;;;;;;1897:6;-1:-1:-1;;;;;1887:16:32;:6;-1:-1:-1;;;;;1887:16:32;;:62;;1930:8;1940;1887:62;;;1907:8;1917;1887:62;1864:85;;;;-1:-1:-1;1527:429:32;-1:-1:-1;;;;;;;1527:429:32:o;2540:557::-;2672:17;2720:1;2709:8;:12;2701:66;;;;-1:-1:-1;;;2701:66:32;;;;;;;:::i;:::-;2797:1;2785:9;:13;:31;;;;;2815:1;2802:10;:14;2785:31;2777:82;;;;-1:-1:-1;;;2777:82:32;;;;;;;:::i;:::-;2869:23;2895:17;:8;2908:3;2895:12;:17::i;:::-;2869:43;-1:-1:-1;2922:17:32;2942:31;2869:43;2962:10;2942:19;:31::i;:::-;2922:51;-1:-1:-1;2983:19:32;3005:40;3029:15;3005:19;:9;3019:4;3005:13;:19::i;:::-;:23;;:40::i;:::-;2983:62;-1:-1:-1;3067:23:32;2983:62;3067:9;:23;:::i;:::-;3055:35;2540:557;-1:-1:-1;;;;;;;2540:557:32:o;334:341::-;409:14;425;469:6;-1:-1:-1;;;;;459:16:32;:6;-1:-1:-1;;;;;459:16:32;;;451:64;;;;-1:-1:-1;;;451:64:32;;;;;;;:::i;:::-;553:6;-1:-1:-1;;;;;544:15:32;:6;-1:-1:-1;;;;;544:15:32;;:53;;582:6;590;544:53;;;563:6;571;544:53;525:72;;-1:-1:-1;525:72:32;-1:-1:-1;;;;;;615:20:32;;607:61;;;;-1:-1:-1;;;607:61:32;;;;;;;:::i;3215:510::-;3347:16;3395:1;3383:9;:13;3375:68;;;;-1:-1:-1;;;3375:68:32;;;;;;;:::i;:::-;3473:1;3461:9;:13;:31;;;;;3491:1;3478:10;:14;3461:31;3453:82;;;;-1:-1:-1;;;3453:82:32;;;;;;;:::i;:::-;3545:17;3565:34;3594:4;3565:24;:9;3579;3565:13;:24::i;:::-;:28;;:34::i;:::-;3545:54;-1:-1:-1;3609:19:32;3631:34;3661:3;3631:25;:10;3646:9;3631:14;:25::i;:34::-;3609:56;-1:-1:-1;3686:32:32;3716:1;3687:23;3609:56;3687:9;:23;:::i;3686:32::-;3675:43;3215:510;-1:-1:-1;;;;;;3215:510:32:o;458:140:35:-;510:6;536;;;:30;;-1:-1:-1;565:1:35;560;551:5;560:1;565;551:5;:::i;:::-;547:9;-1:-1:-1;546:15:35;;547:9;546:15;:::i;:::-;:20;536:30;528:63;;;;-1:-1:-1;;;528:63:35;;;;;;;:::i;:::-;458:140;;;;:::o;193:126::-;245:6;286:1;276:5;280:1;286;276:5;:::i;:::-;272:9;;;271:16;;263:49;;;;-1:-1:-1;;;263:49:35;;;;;;;:::i;325:127::-;377:6;418:1;408:5;412:1;418;408:5;:::i;:::-;404:9;;;403:16;;395:50;;;;-1:-1:-1;;;395:50:35;;;;;;;:::i;14:150:38:-;103:13;;125:33;103:13;125:33;:::i;169:782::-;;282:3;275:4;267:6;263:17;259:27;249:2;;304:5;297;290:20;249:2;344:6;331:20;370:4;394:65;409:49;455:2;409:49;:::i;:::-;394:65;:::i;:::-;493:15;;;524:12;;;;556:15;;;602:11;;;590:24;;586:33;;583:42;-1:-1:-1;580:2:38;;;642:5;635;628:20;580:2;668:5;682:240;696:2;693:1;690:9;682:240;;;767:3;754:17;784:33;811:5;784:33;:::i;:::-;830:18;;868:12;;;;900;;;;714:1;707:9;682:240;;;-1:-1:-1;940:5:38;;239:712;-1:-1:-1;;;;;;;239:712:38:o;956:404::-;;;1089:3;1082:4;1074:6;1070:17;1066:27;1056:2;;1114:8;1104;1097:26;1056:2;-1:-1:-1;1144:20:38;;1187:18;1176:30;;1173:2;;;1226:8;1216;1209:26;1173:2;1270:4;1262:6;1258:17;1246:29;;1333:3;1326:4;1318;1310:6;1306:17;1298:6;1294:30;1290:41;1287:50;1284:2;;;1350:1;1347;1340:12;1365:377;;;1482:3;1475:4;1467:6;1463:17;1459:27;1449:2;;1507:8;1497;1490:26;1449:2;-1:-1:-1;1537:20:38;;1580:18;1569:30;;1566:2;;;1619:8;1609;1602:26;1566:2;1663:4;1655:6;1651:17;1639:29;;1715:3;1708:4;1699:6;1691;1687:19;1683:30;1680:39;1677:2;;;1732:1;1729;1722:12;1747:190;1828:13;;1881:30;1870:42;;1860:53;;1850:2;;1927:1;1924;1917:12;1942:263;;2065:2;2053:9;2044:7;2040:23;2036:32;2033:2;;;2086:6;2078;2071:22;2033:2;2123:9;2117:16;2142:33;2169:5;2142:33;:::i;2210:1396::-;;;;;;;;;2479:3;2467:9;2458:7;2454:23;2450:33;2447:2;;;2501:6;2493;2486:22;2447:2;2545:9;2532:23;2564:33;2591:5;2564:33;:::i;:::-;2616:5;-1:-1:-1;2673:2:38;2658:18;;2645:32;2686:35;2645:32;2686:35;:::i;:::-;2740:7;-1:-1:-1;2798:2:38;2783:18;;2770:32;2821:18;2851:14;;;2848:2;;;2883:6;2875;2868:22;2848:2;2927:76;2995:7;2986:6;2975:9;2971:22;2927:76;:::i;:::-;3022:8;;-1:-1:-1;2901:102:38;-1:-1:-1;3110:2:38;3095:18;;3082:32;;-1:-1:-1;3126:16:38;;;3123:2;;;3160:6;3152;3145:22;3123:2;3204:78;3274:7;3263:8;3252:9;3248:24;3204:78;:::i;:::-;3301:8;;-1:-1:-1;3178:104:38;-1:-1:-1;3389:3:38;3374:19;;3361:33;;-1:-1:-1;3406:16:38;;;3403:2;;;3440:6;3432;3425:22;3403:2;;3484:62;3538:7;3527:8;3516:9;3512:24;3484:62;:::i;:::-;2437:1169;;;;-1:-1:-1;2437:1169:38;;-1:-1:-1;2437:1169:38;;;;;;3565:8;-1:-1:-1;;;2437:1169:38:o;3611:849::-;;;;;;;3810:3;3798:9;3789:7;3785:23;3781:33;3778:2;;;3832:6;3824;3817:22;3778:2;3876:9;3863:23;3895:33;3922:5;3895:33;:::i;:::-;3947:5;-1:-1:-1;4004:2:38;3989:18;;3976:32;4017:35;3976:32;4017:35;:::i;:::-;4071:7;-1:-1:-1;4125:2:38;4110:18;;4097:32;;-1:-1:-1;4176:2:38;4161:18;;4148:32;;-1:-1:-1;4231:3:38;4216:19;;4203:33;4259:18;4248:30;;4245:2;;;4296:6;4288;4281:22;4245:2;4340:60;4392:7;4383:6;4372:9;4368:22;4340:60;:::i;:::-;3768:692;;;;-1:-1:-1;3768:692:38;;-1:-1:-1;3768:692:38;;4419:8;;3768:692;-1:-1:-1;;;3768:692:38:o;4465:297::-;;4585:2;4573:9;4564:7;4560:23;4556:32;4553:2;;;4606:6;4598;4591:22;4553:2;4643:9;4637:16;4696:5;4689:13;4682:21;4675:5;4672:32;4662:2;;4723:6;4715;4708:22;4767:352;;4878:2;4866:9;4857:7;4853:23;4849:32;4846:2;;;4899:6;4891;4884:22;4846:2;4943:9;4930:23;4993:66;4986:5;4982:78;4975:5;4972:89;4962:2;;5080:6;5072;5065:22;6298:474;;;;6454:2;6442:9;6433:7;6429:23;6425:32;6422:2;;;6475:6;6467;6460:22;6422:2;6503:42;6535:9;6503:42;:::i;:::-;6493:52;;6564:51;6611:2;6600:9;6596:18;6564:51;:::i;:::-;6554:61;;6658:2;6647:9;6643:18;6637:25;6702:10;6695:5;6691:22;6684:5;6681:33;6671:2;;6733:6;6725;6718:22;6671:2;6761:5;6751:15;;;6412:360;;;;;:::o;6777:194::-;;6900:2;6888:9;6879:7;6875:23;6871:32;6868:2;;;6921:6;6913;6906:22;6868:2;-1:-1:-1;6949:16:38;;6858:113;-1:-1:-1;6858:113:38:o;6976:327::-;;;7105:2;7093:9;7084:7;7080:23;7076:32;7073:2;;;7126:6;7118;7111:22;7073:2;7167:9;7154:23;7144:33;;7227:2;7216:9;7212:18;7199:32;7240:33;7267:5;7240:33;:::i;:::-;7292:5;7282:15;;;7063:240;;;;;:::o;7308:324::-;;;7448:2;7436:9;7427:7;7423:23;7419:32;7416:2;;;7469:6;7461;7454:22;7416:2;7503:9;7497:16;7487:26;;7556:2;7545:9;7541:18;7535:25;7569:33;7596:5;7569:33;:::i;7637:1246::-;;;;;7844:3;7832:9;7823:7;7819:23;7815:33;7812:2;;;7866:6;7858;7851:22;7812:2;7900:9;7894:16;7884:26;;7929:2;7975;7964:9;7960:18;7954:25;8002:18;7994:6;7991:30;7988:2;;;8039:6;8031;8024:22;7988:2;8067:22;;8120:4;8112:13;;8108:27;-1:-1:-1;8098:2:38;;8154:6;8146;8139:22;8098:2;8188;8182:9;8211:65;8226:49;8272:2;8226:49;:::i;8211:65::-;8310:15;;;8341:12;;;;8373:11;;;8411;;;8403:20;;8399:29;;8396:42;-1:-1:-1;8393:2:38;;;8456:6;8448;8441:22;8393:2;8483:6;8474:15;;8498:233;8512:2;8509:1;8506:9;8498:233;;;8576:3;8570:10;8593:33;8620:5;8593:33;:::i;:::-;8639:18;;8530:1;8523:9;;;;;8677:12;;;;8709;;8498:233;;;8502:3;8750:5;8740:15;;;;;;;8774:59;8829:2;8818:9;8814:18;8774:59;:::i;:::-;8873:2;8858:18;;;;8852:25;7802:1081;;;;-1:-1:-1;;;7802:1081:38:o;8888:648::-;;;;;9076:3;9064:9;9055:7;9051:23;9047:33;9044:2;;;9098:6;9090;9083:22;9044:2;9139:9;9126:23;9116:33;;9200:2;9189:9;9185:18;9172:32;9227:18;9219:6;9216:30;9213:2;;;9264:6;9256;9249:22;9213:2;9292:67;9351:7;9342:6;9331:9;9327:22;9292:67;:::i;:::-;9282:77;;;9409:2;9398:9;9394:18;9381:32;9422:33;9449:5;9422:33;:::i;:::-;9034:502;;;;-1:-1:-1;9474:5:38;;9526:2;9511:18;9498:32;;-1:-1:-1;;9034:502:38:o;9541:934::-;;;9679:2;9667:9;9658:7;9654:23;9650:32;9647:2;;;9700:6;9692;9685:22;9647:2;9741:9;9728:23;9718:33;;9770:2;9823;9812:9;9808:18;9795:32;9846:18;9887:2;9879:6;9876:14;9873:2;;;9908:6;9900;9893:22;9873:2;9951:6;9940:9;9936:22;9926:32;;9996:7;9989:4;9985:2;9981:13;9977:27;9967:2;;10023:6;10015;10008:22;9967:2;10064;10051:16;10086:2;10082;10079:10;10076:2;;;10092:18;;:::i;:::-;10134:111;10241:2;-1:-1:-1;;10165:4:38;10161:2;10157:13;10153:86;10149:95;10134:111;:::i;:::-;10121:124;;10268:2;10261:5;10254:17;10308:7;10303:2;10298;10294;10290:11;10286:20;10283:33;10280:2;;;10334:6;10326;10319:22;10280:2;10394;10389;10385;10381:11;10376:2;10369:5;10365:14;10352:45;10417:14;;10413:23;;;10406:39;;;;9637:838;;10421:5;;-1:-1:-1;9637:838:38;;-1:-1:-1;;9637:838:38:o;10480:717::-;;;;;;10685:3;10673:9;10664:7;10660:23;10656:33;10653:2;;;10707:6;10699;10692:22;10653:2;10748:9;10735:23;10725:33;;10805:2;10794:9;10790:18;10777:32;10767:42;;10860:2;10849:9;10845:18;10832:32;10887:18;10879:6;10876:30;10873:2;;;10924:6;10916;10909:22;10873:2;10952:67;11011:7;11002:6;10991:9;10987:22;10952:67;:::i;:::-;10942:77;;;11069:2;11058:9;11054:18;11041:32;11082:33;11109:5;11082:33;:::i;:::-;10643:554;;;;-1:-1:-1;10643:554:38;;11186:3;11171:19;11158:33;;10643:554;-1:-1:-1;;10643:554:38:o;11202:368::-;11369:66;11464:2;11460:15;;;11456:24;;11444:37;;11515:15;;;;11511:24;11506:2;11497:12;;11490:46;11561:2;11552:12;;11349:221::o;11575:274::-;;11742:6;11736:13;11758:53;11804:6;11799:3;11792:4;11784:6;11780:17;11758:53;:::i;:::-;11827:16;;;;;11712:137;-1:-1:-1;;11712:137:38:o;11854:724::-;12225:66;12213:79;;12329:2;12325:15;;;;12342:66;12321:88;12317:1;12308:11;;12301:109;12435:2;12426:12;;12419:28;12477:66;12472:2;12463:12;;12456:88;12569:2;12560:12;;12203:375::o;12583:226::-;-1:-1:-1;;;;;12747:55:38;;;;12729:74;;12717:2;12702:18;;12684:125::o;12814:327::-;-1:-1:-1;;;;;13067:15:38;;;13049:34;;13119:15;;13114:2;13099:18;;13092:43;12976:2;12961:18;;12943:198::o;13146:398::-;-1:-1:-1;;;;;13427:15:38;;;13409:34;;13479:15;;;;13474:2;13459:18;;13452:43;13526:2;13511:18;;13504:34;;;;13336:2;13321:18;;13303:241::o;13549:297::-;-1:-1:-1;;;;;13741:55:38;;;;13723:74;;13828:2;13813:18;;13806:34;13711:2;13696:18;;13678:168::o;13851:635::-;14022:2;14074:21;;;14144:13;;14047:18;;;14166:22;;;13851:635;;14022:2;14245:15;;;;14219:2;14204:18;;;13851:635;14291:169;14305:6;14302:1;14299:13;14291:169;;;14366:13;;14354:26;;14435:15;;;;14400:12;;;;14327:1;14320:9;14291:169;;;-1:-1:-1;14477:3:38;;14002:484;-1:-1:-1;;;;;;14002:484:38:o;14491:187::-;14656:14;;14649:22;14631:41;;14619:2;14604:18;;14586:92::o;14683:248::-;14857:66;14845:79;;;;14827:98;;14815:2;14800:18;;14782:149::o;14936:345::-;15138:2;15120:21;;;15177:2;15157:18;;;15150:30;15216:23;15211:2;15196:18;;15189:51;15272:2;15257:18;;15110:171::o;15286:355::-;15488:2;15470:21;;;15527:2;15507:18;;;15500:30;15566:33;15561:2;15546:18;;15539:61;15632:2;15617:18;;15460:181::o;15646:346::-;15848:2;15830:21;;;15887:2;15867:18;;;15860:30;15926:24;15921:2;15906:18;;15899:52;15983:2;15968:18;;15820:172::o;15997:344::-;16199:2;16181:21;;;16238:2;16218:18;;;16211:30;16277:22;16272:2;16257:18;;16250:50;16332:2;16317:18;;16171:170::o;16346:344::-;16548:2;16530:21;;;16587:2;16567:18;;;16560:30;16626:22;16621:2;16606:18;;16599:50;16681:2;16666:18;;16520:170::o;16695:406::-;16897:2;16879:21;;;16936:2;16916:18;;;16909:30;16975:34;16970:2;16955:18;;16948:62;17046:12;17041:2;17026:18;;17019:40;17091:3;17076:19;;16869:232::o;17106:352::-;17308:2;17290:21;;;17347:2;17327:18;;;17320:30;17386;17381:2;17366:18;;17359:58;17449:2;17434:18;;17280:178::o;17463:405::-;17665:2;17647:21;;;17704:2;17684:18;;;17677:30;17743:34;17738:2;17723:18;;17716:62;17814:11;17809:2;17794:18;;17787:39;17858:3;17843:19;;17637:231::o;17873:340::-;18075:2;18057:21;;;18114:2;18094:18;;;18087:30;18153:18;18148:2;18133:18;;18126:46;18204:2;18189:18;;18047:166::o;18218:399::-;18420:2;18402:21;;;18459:2;18439:18;;;18432:30;18498:34;18493:2;18478:18;;18471:62;18569:5;18564:2;18549:18;;18542:33;18607:3;18592:19;;18392:225::o;18622:350::-;18824:2;18806:21;;;18863:2;18843:18;;;18836:30;18902:28;18897:2;18882:18;;18875:56;18963:2;18948:18;;18796:176::o;18977:399::-;19179:2;19161:21;;;19218:2;19198:18;;;19191:30;19257:34;19252:2;19237:18;;19230:62;19328:5;19323:2;19308:18;;19301:33;19366:3;19351:19;;19151:225::o;19381:402::-;19583:2;19565:21;;;19622:2;19602:18;;;19595:30;19661:34;19656:2;19641:18;;19634:62;19732:8;19727:2;19712:18;;19705:36;19773:3;19758:19;;19555:228::o;19788:400::-;19990:2;19972:21;;;20029:2;20009:18;;;20002:30;20068:34;20063:2;20048:18;;20041:62;20139:6;20134:2;20119:18;;20112:34;20178:3;20163:19;;19962:226::o;20193:352::-;20395:2;20377:21;;;20434:2;20414:18;;;20407:30;20473;20468:2;20453:18;;20446:58;20536:2;20521:18;;20367:178::o;20550:177::-;20696:25;;;20684:2;20669:18;;20651:76::o;20732:248::-;20906:25;;;20962:2;20947:18;;20940:34;20894:2;20879:18;;20861:119::o;20985:706::-;;21216:6;21205:9;21198:25;21259:6;21254:2;21243:9;21239:18;21232:34;-1:-1:-1;;;;;21306:6:38;21302:55;21297:2;21286:9;21282:18;21275:83;21394:3;21389:2;21378:9;21374:18;21367:31;21427:6;21421:13;21471:6;21465:3;21454:9;21450:19;21443:35;21487:67;21547:6;21541:3;21530:9;21526:19;21521:2;21513:6;21509:15;21487:67;:::i;:::-;21606:2;21594:15;-1:-1:-1;;21590:88:38;21575:104;;;;21681:3;21571:114;;21188:503;-1:-1:-1;;;;;21188:503:38:o;21696:251::-;21766:2;21760:9;21796:17;;;21843:18;21828:34;;21864:22;;;21825:62;21822:2;;;21890:18;;:::i;:::-;21926:2;21919:22;21740:207;;-1:-1:-1;21740:207:38:o;21952:192::-;;22051:18;22043:6;22040:30;22037:2;;;22073:18;;:::i;:::-;-1:-1:-1;22133:4:38;22114:17;;;22110:28;;22027:117::o;22149:128::-;;22220:1;22216:6;22213:1;22210:13;22207:2;;;22226:18;;:::i;:::-;-1:-1:-1;22262:9:38;;22197:80::o;22282:274::-;;22348:1;22338:2;;-1:-1:-1;;;22380:1:38;22373:88;22484:4;22481:1;22474:15;22512:4;22509:1;22502:15;22338:2;-1:-1:-1;22541:9:38;;22328:228::o;22561:453::-;22657:6;22680:5;22694:314;22743:1;22780:2;22770:8;22767:16;22757:2;;22787:5;;;22757:2;22828:4;22823:3;22819:14;22813:4;22810:24;22807:2;;;22837:18;;:::i;:::-;22887:2;22877:8;22873:17;22870:2;;;22902:16;;;;22870:2;22981:17;;;;;22941:15;;22694:314;;;22638:376;;;;;;;:::o;23019:199::-;;23108:104;-1:-1:-1;;23135:8:38;23129:4;23223:922;23307:8;23297:2;;-1:-1:-1;23348:1:38;23362:5;;23297:2;23396:4;23386:2;;-1:-1:-1;23433:1:38;23447:5;;23386:2;23478:4;23496:1;23491:59;;;;23564:1;23559:183;;;;23471:271;;23491:59;23521:1;23512:10;;23535:5;;;23559:183;23596:3;23586:8;23583:17;23580:2;;;23603:18;;:::i;:::-;23659:1;23649:8;23645:16;23636:25;;23687:3;23680:5;23677:14;23674:2;;;23694:18;;:::i;:::-;23727:5;;;23471:271;;23826:2;23816:8;23813:16;23807:3;23801:4;23798:13;23794:36;23788:2;23778:8;23775:16;23770:2;23764:4;23761:12;23757:35;23754:77;23751:2;;;-1:-1:-1;23863:19:38;;;23898:14;;;23895:2;;;23915:18;;:::i;:::-;23948:5;;23751:2;23995:42;24033:3;24023:8;24017:4;24014:1;23995:42;:::i;:::-;24070:6;24065:3;24061:16;24052:7;24049:29;24046:2;;;24081:18;;:::i;:::-;24119:20;;23287:858;-1:-1:-1;;;;23287:858:38:o;24150:228::-;;24316:1;-1:-1:-1;;24244:74:38;24241:1;24238:81;24233:1;24226:9;24219:17;24215:105;24212:2;;;24323:18;;:::i;:::-;-1:-1:-1;24363:9:38;;24202:176::o;24383:125::-;;24451:1;24448;24445:8;24442:2;;;24456:18;;:::i;:::-;-1:-1:-1;24493:9:38;;24432:76::o;24513:258::-;24585:1;24595:113;24609:6;24606:1;24603:13;24595:113;;;24685:11;;;24679:18;24666:11;;;24659:39;24631:2;24624:10;24595:113;;;24726:6;24723:1;24720:13;24717:2;;;-1:-1:-1;;24761:1:38;24743:16;;24736:27;24566:205::o;24776:196::-;;24843:5;24833:2;;24852:18;;:::i;:::-;-1:-1:-1;;;24888:78:38;;24823:149::o;24977:195::-;;-1:-1:-1;;25040:5:38;25037:77;25034:2;;;25117:18;;:::i;:::-;-1:-1:-1;25164:1:38;25153:13;;25024:148::o;25177:184::-;-1:-1:-1;;;25226:1:38;25219:88;25326:4;25323:1;25316:15;25350:4;25347:1;25340:15;25366:184;-1:-1:-1;;;25415:1:38;25408:88;25515:4;25512:1;25505:15;25539:4;25536:1;25529:15;25555:156;-1:-1:-1;;;;;25636:5:38;25632:54;25625:5;25622:65;25612:2;;25701:1;25698;25691:12;25612:2;25602:109;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"wrapper\",\"type\":\"address\"}],\"name\":\"_wrapEth\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"interoperable\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MateriaSwapper.sol\":\"MateriaSwapper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/MateriaOperator.sol\":{\"keccak256\":\"0x0d1e0327e73a3b8a1b316f27d2ca2040917bb2c4c8bf0d0a6fd635798597d5a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://e86eebdbf5a6be0e77c9d6d849060a9ba537031956ca32a199eebaca576d51b5\",\"dweb:/ipfs/QmV6PgD4uuJhmywByCYPeAmRyENJsrY5xxmnxfY3pz9DXR\"]},\"contracts/MateriaSwapper.sol\":{\"keccak256\":\"0xf47cb537f406de37d2657c8d23aee5512f73cfdc66934a09efff9b48ead2ed66\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://907937ccafd3fa2f960d86394a56b8dba175029d6ecbc382529d83ce4b61999a\",\"dweb:/ipfs/QmQ8bo6C3CHHXqkr9zQUy1AjEd6aSYBN59qCgwqn8yN5qS\"]},\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IDoubleProxy.sol\":{\"keccak256\":\"0xb3775ff336d8ca9e0f7cb3b7e7c322d96c6360b53ec4a3ce45c6540d4f0126a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://6ec1948724904ecf9185f960548865d20a13969a840c926e9162e4bb354d18f6\",\"dweb:/ipfs/QmXbRyhfnW3E4Mij5y8v9JfHVB2vqxxwDgNfvHeu3wHiHJ\"]},\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IERC20WrapperV1.sol\":{\"keccak256\":\"0xb11ab8431790ecf02d6380277e277a1e44fcf1cbc81973301149e7080157ea4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b5dfc1840e8834ba39b1a634fdc2ba67d250adc4f8540f0ee33e16439ccb9cd\",\"dweb:/ipfs/QmTyF4vz44kcYuLuZAEW7tBxWuMiNZAojDKopi8oeudgk3\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]},\"contracts/interfaces/IEthItemMainInterface.sol\":{\"keccak256\":\"0x1bc85f4e88618a2d75910da856d5d43a87213463dae57054b44aa0e2220c43e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12240288d6503024c37ad756722f451ad3d819affd30b9d54ca0e06942c414b0\",\"dweb:/ipfs/QmU1hLcanobgXgEEXbbA56YPob23ghDXXqjK7gCCXbj3mT\"]},\"contracts/interfaces/IEthItemModelBase.sol\":{\"keccak256\":\"0x2ef4d851f1127e58dc496490f84ebe5690bff39c48a0ff43338d0087e3b114da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7db0efdf2c2c6c758fa12146e9aa31ebe1fc7b1eaa36d644ada5a7696b22c627\",\"dweb:/ipfs/QmXP62zz7qHJtQfxNRoxPsPiJxhXTKaKRfjCHGxetwgYyV\"]},\"contracts/interfaces/IMateriaFactory.sol\":{\"keccak256\":\"0xbb23d0937dd4e8da3b15e4e461603554abc9945d40b713f5f8f6e612d7e36dae\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://1cc856dd3375c7c345c693edda94b27d5c03d666843989308d6e61ef786b3718\",\"dweb:/ipfs/QmZaq9Vec3gVXNFoaWX56B2DQPYjpiDahdEoqogskHiJAp\"]},\"contracts/interfaces/IMateriaOrchestrator.sol\":{\"keccak256\":\"0x178eea6d9abe7758adbf30d406c9e3b1e05028441e6bf2661f6ac9d7441b06fc\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://b96f2d38b59f06bbfdf7d13e5a375e8eb6e1de507f40be7e7cbe37b34526a0e6\",\"dweb:/ipfs/QmSgMmM6Uk2EpgwNZxZpJf3yHHPQZ6LvcBWAV9DuPSnrCm\"]},\"contracts/interfaces/IMateriaPair.sol\":{\"keccak256\":\"0x9bebb503cf622a7e7328ff812b8817e1d3b22e273d345083118e92522b810693\",\"urls\":[\"bzz-raw://a0b3308a2e9f28a85ec586372329792eaf32562c7293af0657ef03f8d04bc7f9\",\"dweb:/ipfs/QmegwdpH1wYAUtTwKu1yUiekj13CB251znNc4Kb2Jf5b2L\"]},\"contracts/interfaces/INativeV1.sol\":{\"keccak256\":\"0x923c01bc275842ef09bd388355d611e119f115b92c283beb11b88d783696bae5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://117e0b85dba46111c974aa4a9e6ddd46d9d75198e93b6e2c571604fb5b25f5cb\",\"dweb:/ipfs/QmaVw7wqeR8jWMW55VPp6F1cMcGhb4VLAG3fPpRwTHmn3D\"]},\"contracts/libraries/MateriaLibrary.sol\":{\"keccak256\":\"0x84b8cdd67ecab6d9bd442140670a16c4608fefdcaa702c25339a89b0527381c6\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://f2ce38a46f0ddc6b043ba9e91590f482553fc96c7bec769825d36089f6d08887\",\"dweb:/ipfs/QmXVp7AwoHFm4whU26XE9kvaYmfb4QyXrzsqaEGXvgybFN\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xe04b4ed1aab8779734d012e907f742e8b6e8ad539c01d5466b9eb58752fdc514\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://667941f2ea3584629681a303e988ffcbc33a2e8313f4658ad8700b2209b3ea4d\",\"dweb:/ipfs/QmafqLrntkf6gRyhAHt4wYojdHwuZXeD8gcE7FJWW6rKWm\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0xb2c4a89b2ee4538b41badb2b6e2d141deeca68be9298ec3e7f98b6812b4ee2a2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bf3e8a68c38541e0425dfd1f825371086a9a18eaadf12000e00b0440156198b\",\"dweb:/ipfs/QmcfasSoXaDg5A5dscMiKH41fWnCFnbJfpSAzn5gbMaVxd\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506152ef806100206000396000f3fe6080604052600436106100b15760003560e01c80638803dbee11610069578063f23a6e611161004e578063f23a6e61146101b9578063f717cd6d146101d9578063fb3bdb41146101f9576100b1565b80638803dbee1461016c578063bc197c811461018c576100b1565b806338ed17391161009a57806338ed1739146101195780634a25d94a146101395780637ff36ab514610159576100b1565b806301ffc9a7146100b657806318cbafe5146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d13660046146ed565b61020c565b6040516100e39190614b8a565b60405180910390f35b3480156100f857600080fd5b5061010c61010736600461499b565b610214565b6040516100e39190614b46565b34801561012557600080fd5b5061010c61013436600461499b565b6105b8565b34801561014557600080fd5b5061010c61015436600461499b565b610b0c565b61010c6101673660046148a3565b611115565b34801561017857600080fd5b5061010c61018736600461499b565b611549565b34801561019857600080fd5b506101ac6101a7366004614598565b611c42565b6040516100e39190614b95565b3480156101c557600080fd5b506101ac6101d4366004614653565b611c49565b6101ec6101e7366004614793565b611d3c565b6040516100e39190614adb565b61010c6102073660046148a3565b611db9565b60005b919050565b606081428110156102405760405162461bcd60e51b815260040161023790614dc6565b60405180910390fd5b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561027b57600080fd5b505afa15801561028f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b3919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156102f057600080fd5b505afa158015610304573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610328919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036557600080fd5b505afa158015610379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039d919061477b565b90506103d3886000815181106103c357634e487b7160e01b600052603260045260246000fd5b602002602001015133308d612293565b610406886000815181106103f757634e487b7160e01b600052603260045260246000fd5b60200260200101518b84612398565b8960008151811061042757634e487b7160e01b600052603260045260246000fd5b60200260200101819c50826001600160a01b03166001600160a01b03168152505050610454838b8a612694565b94508885600187516104669190615200565b8151811061048457634e487b7160e01b600052603260045260246000fd5b602002602001015110156104aa5760405162461bcd60e51b815260040161023790614e5a565b61055f886000815181106104ce57634e487b7160e01b600052603260045260246000fd5b6020026020010151610531858b6000815181106104fb57634e487b7160e01b600052603260045260246000fd5b60200260200101518c60018151811061052457634e487b7160e01b600052603260045260246000fd5b6020026020010151612843565b8760008151811061055257634e487b7160e01b600052603260045260246000fd5b60200260200101516128b3565b61056b83868a306129b5565b6105ab81866001885161057e9190615200565b8151811061059c57634e487b7160e01b600052603260045260246000fd5b6020026020010151848a612ba2565b5050505095945050505050565b606081428110156105db5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561061657600080fd5b505afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068b57600080fd5b505afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c3919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561070057600080fd5b505afa158015610714573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610738919061457c565b905061075e886000815181106103c357634e487b7160e01b600052603260045260246000fd5b6107918860008151811061078257634e487b7160e01b600052603260045260246000fd5b60200260200101518b83612398565b896000815181106107b257634e487b7160e01b600052603260045260246000fd5b60200260200101819c50826001600160a01b03166001600160a01b0316815250505060008060006108178b60018d516107eb9190615200565b8151811061080957634e487b7160e01b600052603260045260246000fd5b602002602001015185612c2b565b90935091508215801561087057508a60018c516108349190615200565b8151811061085257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b031614155b1561099c578a60018c516108849190615200565b815181106108a257634e487b7160e01b600052603260045260246000fd5b602002602001015190506108b6818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b71906108fe908590600401614fdf565b60206040518083038186803b15801561091657600080fd5b505afa15801561092a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094e919061457c565b8b60018d5161095d9190615200565b8151811061097b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6109a7868e8d612694565b97508b8860018a516109b99190615200565b815181106109d757634e487b7160e01b600052603260045260246000fd5b602002602001015110156109fd5760405162461bcd60e51b815260040161023790614e5a565b610a988b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b6020026020010151610a77888e600081518110610a4e57634e487b7160e01b600052603260045260246000fd5b60200260200101518f60018151811061052457634e487b7160e01b600052603260045260246000fd5b8a60008151811061055257634e487b7160e01b600052603260045260246000fd5b8215610aaf57610aaa86898d8d6129b5565b610afc565b610abb86898d306129b5565b610afc82828a60018c51610acf9190615200565b81518110610aed57634e487b7160e01b600052603260045260246000fd5b6020026020010151878e612de2565b5050505050505095945050505050565b60608142811015610b2f5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6a57600080fd5b505afa158015610b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba2919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610bdf57600080fd5b505afa158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c17919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c919061477b565b9050600088600081518110610cb157634e487b7160e01b600052603260045260246000fd5b60200260200101519050826001600160a01b0316630c0f6b71846001600160a01b0316631bf8ee708c600081518110610cfa57634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b8152600401610d1e9190614adb565b60206040518083038186803b158015610d3657600080fd5b505afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e919061477b565b6040518263ffffffff1660e01b8152600401610d8a9190614fdf565b60206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda919061457c565b89600081518110610dfb57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050610e26848c8b612ee1565b955088600081518110610e4957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8957600080fd5b505afa158015610e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec1919061477b565b610ecc906012615200565b610ed790600a615113565b86600081518110610ef857634e487b7160e01b600052603260045260246000fd5b6020026020010151610f0a91906150ad565b610f15906001615095565b86600081518110610f3657634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508986600081518110610f6457634e487b7160e01b600052603260045260246000fd5b60200260200101511115610f8a5760405162461bcd60e51b815260040161023790614c30565b610fbe81333089600081518110610fb157634e487b7160e01b600052603260045260246000fd5b6020026020010151612293565b610ff18187600081518110610fe357634e487b7160e01b600052603260045260246000fd5b602002602001015185612398565b90508660008151811061101457634e487b7160e01b600052603260045260246000fd5b6020026020010181815250506110bb8960008151811061104457634e487b7160e01b600052603260045260246000fd5b602002602001015161109a868c60008151811061107157634e487b7160e01b600052603260045260246000fd5b60200260200101518d60018151811061052457634e487b7160e01b600052603260045260246000fd5b8860008151811061055257634e487b7160e01b600052603260045260246000fd5b6110c784878b306129b5565b6111078287600189516110da9190615200565b815181106110f857634e487b7160e01b600052603260045260246000fd5b6020026020010151858b612ba2565b505050505095945050505050565b606081428110156111385760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e857600080fd5b505afa1580156111fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611220919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561125d57600080fd5b505afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611295919061457c565b90506112a13482611d3c565b886000815181106112c257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505060008060006112f98b60018d516107eb9190615200565b90935091508215801561135257508a60018c516113169190615200565b8151811061133457634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b031614155b1561147e578a60018c516113669190615200565b8151811061138457634e487b7160e01b600052603260045260246000fd5b60200260200101519050611398818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b71906113e0908590600401614fdf565b60206040518083038186803b1580156113f857600080fd5b505afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611430919061457c565b8b60018d5161143f9190615200565b8151811061145d57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61148986348d612694565b97508b8860018a5161149b9190615200565b815181106114b957634e487b7160e01b600052603260045260246000fd5b602002602001015110156114df5760405162461bcd60e51b815260040161023790614e5a565b6115038b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b821561151a5761151586898d8d6129b5565b61153a565b61152686898d306129b5565b61153a82828a60018c51610acf9190615200565b50505050505050949350505050565b6060814281101561156c5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156115a757600080fd5b505afa1580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561161c57600080fd5b505afa158015611630573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611654919061457c565b905060008760008151811061167957634e487b7160e01b600052603260045260246000fd5b60200260200101519050816001600160a01b0316630c0f6b71836001600160a01b0316631bf8ee708b6000815181106116c257634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b81526004016116e69190614adb565b60206040518083038186803b1580156116fe57600080fd5b505afa158015611712573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611736919061477b565b6040518263ffffffff1660e01b81526004016117529190614fdf565b60206040518083038186803b15801561176a57600080fd5b505afa15801561177e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a2919061457c565b886000815181106117c357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506000806117f88a60018c516107eb9190615200565b90925090506000821580156118c357508a60018c516118179190615200565b8151811061183557634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b7919061457c565b6001600160a01b031614155b156119ef578a60018c516118d79190615200565b815181106118f557634e487b7160e01b600052603260045260246000fd5b60200260200101519050611909818e612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909d506001600160a01b03861690630c0f6b7190611951908590600401614fdf565b60206040518083038186803b15801561196957600080fd5b505afa15801561197d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a1919061457c565b8b60018d516119b09190615200565b815181106119ce57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6119fa868e8d612ee1565b9750836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a3557600080fd5b505afa158015611a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6d919061477b565b611a78906012615200565b611a8390600a615113565b88600081518110611aa457634e487b7160e01b600052603260045260246000fd5b6020026020010151611ab691906150ad565b611ac1906001615095565b88600081518110611ae257634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508b88600081518110611b1057634e487b7160e01b600052603260045260246000fd5b60200260200101511115611b365760405162461bcd60e51b815260040161023790614c30565b611b5d8433308b600081518110610fb157634e487b7160e01b600052603260045260246000fd5b611b908489600081518110611b8257634e487b7160e01b600052603260045260246000fd5b602002602001015187612398565b905088600081518110611bb357634e487b7160e01b600052603260045260246000fd5b602002602001018181525050611be38b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b8215611bf557610aaa86898d8d6129b5565b611c0186898d306129b5565b610afc82828a60018c51611c159190615200565b81518110611c3357634e487b7160e01b600052603260045260246000fd5b6020026020010151888e612de2565b6000806000fd5b600080806060818082611c5e888a018a614902565b80519197509150611c7890820160209081019083016147e6565b92975090955093509150611c8d905033613086565b15611c985788611caa565b611caa89670de0b6b3a76400006151e1565b98508460021415611cc757611cc28985858585613116565b611d0b565b8460031415611cde57611cc2848a85858f8661359d565b8460041415611cf457611cc28985858585613a16565b84600514156100b157611cc2848a85858f86613d34565b507ff23a6e61000000000000000000000000000000000000000000000000000000009b9a5050505050505050505050565b6000816001600160a01b031663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611db191906147c2565b949350505050565b60608142811015611ddc5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1757600080fd5b505afa158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015611e8c57600080fd5b505afa158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec4919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0157600080fd5b505afa158015611f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f39919061457c565b90506000806000611f7e8b60018d51611f529190615200565b81518110611f7057634e487b7160e01b600052603260045260246000fd5b602002602001015186612c2b565b909350915082158015611fd757508a60018c51611f9b9190615200565b81518110611fb957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316846001600160a01b031614155b15612103578a60018c51611feb9190615200565b8151811061200957634e487b7160e01b600052603260045260246000fd5b6020026020010151905061201d818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03861690630c0f6b7190612065908590600401614fdf565b60206040518083038186803b15801561207d57600080fd5b505afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b5919061457c565b8b60018d516120c49190615200565b815181106120e257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61210e868d8d612ee1565b9750348860008151811061213257634e487b7160e01b600052603260045260246000fd5b602002602001015111156121585760405162461bcd60e51b815260040161023790614c30565b61218a8860008151811061217c57634e487b7160e01b600052603260045260246000fd5b602002602001015186611d3c565b8b6000815181106121ab57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506121ef8b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b82156122065761220186898d8d6129b5565b612226565b61221286898d306129b5565b61222682828a60018c51611c159190615200565b8760008151811061224757634e487b7160e01b600052603260045260246000fd5b602002602001015134111561153a5761153a338960008151811061227b57634e487b7160e01b600052603260045260246000fd5b60200260200101513461228e9190615200565b614090565b600080856001600160a01b03166323b872dd8686866040516024016122ba93929190614b09565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516123089190614a3e565b6000604051808303816000865af19150503d8060008114612345576040519150601f19603f3d011682016040523d82523d6000602084013e61234a565b606091505b509150915081801561237457508051158061237457508080602001905181019061237491906146cd565b6123905760405162461bcd60e51b815260040161023790614f4b565b505050505050565b60008083856001600160a01b031663dd62ed3e30866040518363ffffffff1660e01b81526004016123ca929190614aef565b60206040518083038186803b1580156123e257600080fd5b505afa1580156123f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241a919061477b565b10156124bd576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063095ea7b39061246990869060001990600401614b2d565b602060405180830381600087803b15801561248357600080fd5b505af1158015612497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bb91906146cd565b505b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526000906001600160a01b038516906340c10f19906125079089908990600401614b2d565b6040805180830381600087803b15801561252057600080fd5b505af1158015612534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255891906147c2565b506040517f0c0f6b710000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690630c0f6b71906125a1908490600401614fdf565b60206040518083038186803b1580156125b957600080fd5b505afa1580156125cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f1919061457c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081529093506001600160a01b038416906370a0823190612639903090600401614adb565b60206040518083038186803b15801561265157600080fd5b505afa158015612665573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612689919061477b565b915050935093915050565b60606002825110156126b85760405162461bcd60e51b815260040161023790614d32565b815167ffffffffffffffff8111156126e057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612709578160200160208202803683370190505b509050828160008151811061272e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505060005b6001835161274b9190615200565b81101561283b576000806127ba8786858151811061277957634e487b7160e01b600052603260045260246000fd5b60200260200101518786600161278f9190615095565b815181106127ad57634e487b7160e01b600052603260045260246000fd5b6020026020010151614122565b915091506127f08484815181106127e157634e487b7160e01b600052603260045260246000fd5b60200260200101518383614209565b846127fc856001615095565b8151811061281a57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050505080806128339061525a565b91505061273d565b509392505050565b600080600061285285856142a3565b9150915085828260405160200161286a929190614a04565b60405160208183030381529060405280519060200120604051602001612891929190614a5a565b60408051601f1981840301815291905280516020909101209695505050505050565b600080846001600160a01b031663a9059cbb85856040516024016128d8929190614b2d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516129269190614a3e565b6000604051808303816000865af19150503d8060008114612963576040519150601f19603f3d011682016040523d82523d6000602084013e612968565b606091505b509150915081801561299257508051158061299257508080602001905181019061299291906146cd565b6129ae5760405162461bcd60e51b815260040161023790614bf9565b5050505050565b60005b600183516129c69190615200565b8110156129ae576000808483815181106129f057634e487b7160e01b600052603260045260246000fd5b602002602001015185846001612a069190615095565b81518110612a2457634e487b7160e01b600052603260045260246000fd5b6020026020010151915091506000612a3c83836142a3565b509050600087612a4d866001615095565b81518110612a6b57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600080836001600160a01b0316866001600160a01b031614612a9957826000612a9d565b6000835b91509150600060028a51612ab19190615200565b8810612abd5788612aec565b612aec8c878c612ace8c6002615095565b8151811061052457634e487b7160e01b600052603260045260246000fd5b9050612af98c8888612843565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015612b36576020820181803683370190505b506040518563ffffffff1660e01b8152600401612b569493929190614ff6565b600060405180830381600087803b158015612b7057600080fd5b505af1158015612b84573d6000803e3d6000fd5b50505050505050505050508080612b9a9061525a565b9150506129b8565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab90612be99087908790600401614fe8565b600060405180830381600087803b158015612c0357600080fd5b505af1158015612c17573d6000803e3d6000fd5b50505050612c258184614090565b50505050565b600080836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c6757600080fd5b505afa925050508015612c97575060408051601f3d908101601f19168201909252612c949181019061457c565b60015b612d3b576040517f1bf8ee70000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841690631bf8ee7090612ce4908790600401614adb565b60206040518083038186803b158015612cfc57600080fd5b505afa158015612d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d34919061477b565b9050612d41565b50600191505b9250929050565b6000826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612d8357600080fd5b505afa158015612d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dbb919061477b565b612dc6906012615200565b612dd190600a615113565b612ddb90836151e1565b9392505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab90612e299088908790600401614fe8565b600060405180830381600087803b158015612e4357600080fd5b505af1158015612e57573d6000803e3d6000fd5b505050506129ae8482866001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612e8c9190614adb565b60206040518083038186803b158015612ea457600080fd5b505afa158015612eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edc919061477b565b6128b3565b6060600282511015612f055760405162461bcd60e51b815260040161023790614d32565b815167ffffffffffffffff811115612f2d57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612f56578160200160208202803683370190505b509050828160018351612f699190615200565b81518110612f8757634e487b7160e01b600052603260045260246000fd5b602002602001018181525050600060018351612fa39190615200565b90505b801561283b576000806130058786612fbf600187615200565b81518110612fdd57634e487b7160e01b600052603260045260246000fd5b60200260200101518786815181106127ad57634e487b7160e01b600052603260045260246000fd5b9150915061303b84848151811061302c57634e487b7160e01b600052603260045260246000fd5b60200260200101518383614326565b84613047600186615200565b8151811061306557634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505050808061307e90615243565b915050612fa6565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c157600080fd5b505afa9250505080156130f1575060408051601f3d908101601f191682019092526130ee9181019061477b565b60015b6130fd5750601261020f565b8060011461310b578061310e565b60005b91505061020f565b80428110156131375760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561317257600080fd5b505afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156131e757600080fd5b505afa1580156131fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321f919061457c565b905060008060006132388960018b516107eb9190615200565b90935091508215801561330157508860018a516132559190615200565b8151811061327357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132bd57600080fd5b505afa1580156132d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f5919061457c565b6001600160a01b031614155b1561342d578860018a516133159190615200565b8151811061333357634e487b7160e01b600052603260045260246000fd5b60200260200101519050613347818b612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909a506001600160a01b03851690630c0f6b719061338f908590600401614fdf565b60206040518083038186803b1580156133a757600080fd5b505afa1580156133bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133df919061457c565b8960018b516133ee9190615200565b8151811061340c57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b600061343a868d8c612694565b90508a816001835161344c9190615200565b8151811061346a57634e487b7160e01b600052603260045260246000fd5b602002602001015110156134905760405162461bcd60e51b815260040161023790614e5a565b61352b8a6000815181106134b457634e487b7160e01b600052603260045260246000fd5b602002602001015161350a888d6000815181106134e157634e487b7160e01b600052603260045260246000fd5b60200260200101518e60018151811061052457634e487b7160e01b600052603260045260246000fd5b8360008151811061055257634e487b7160e01b600052603260045260246000fd5b83156135425761353d86828c8c6129b5565b61358f565b61354e86828c306129b5565b61358f838383600185516135629190615200565b8151811061358057634e487b7160e01b600052603260045260246000fd5b6020026020010151888d612de2565b505050505050505050505050565b80428110156135be5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156135f957600080fd5b505afa15801561360d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613631919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561366e57600080fd5b505afa158015613682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a6919061457c565b905060008060006136bf8a60018c516107eb9190615200565b90935091508215801561378857508960018b516136dc9190615200565b815181106136fa57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561374457600080fd5b505afa158015613758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377c919061457c565b6001600160a01b031614155b156138b4578960018b5161379c9190615200565b815181106137ba57634e487b7160e01b600052603260045260246000fd5b602002602001015190506137ce818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b7190613816908590600401614fdf565b60206040518083038186803b15801561382e57600080fd5b505afa158015613842573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613866919061457c565b8a60018c516138759190615200565b8151811061389357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b60006138c1868e8d612ee1565b90508b816000815181106138e557634e487b7160e01b600052603260045260246000fd5b6020026020010151111561390b5760405162461bcd60e51b815260040161023790614c30565b6000808260008151811061392f57634e487b7160e01b600052603260045260246000fd5b60200260200101518e6139429190615200565b915081111561397e5761397e8c60008151811061396f57634e487b7160e01b600052603260045260246000fd5b60200260200101518b836128b3565b506139d08b6000815181106139a357634e487b7160e01b600052603260045260246000fd5b602002602001015161350a888e600081518110610a4e57634e487b7160e01b600052603260045260246000fd5b83156139e7576139e286828d8d6129b5565b613a07565b6139f386828d306129b5565b613a0783838360018551611c159190615200565b50505050505050505050505050565b8042811015613a375760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613a7257600080fd5b505afa158015613a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aaa919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1f919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015613b5c57600080fd5b505afa158015613b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b94919061477b565b90506000613ba3848b8a612694565b9050888160018351613bb59190615200565b81518110613bd357634e487b7160e01b600052603260045260246000fd5b60200260200101511015613bf95760405162461bcd60e51b815260040161023790614e5a565b613c4a88600081518110613c1d57634e487b7160e01b600052603260045260246000fd5b602002602001015161350a868b6000815181106104fb57634e487b7160e01b600052603260045260246000fd5b613c5684828a306129b5565b826001600160a01b031663b390c0ab838360018551613c759190615200565b81518110613c9357634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b8152600401613cb8929190614fe8565b600060405180830381600087803b158015613cd257600080fd5b505af1158015613ce6573d6000803e3d6000fd5b50505050613d28878260018451613cfd9190615200565b81518110613d1b57634e487b7160e01b600052603260045260246000fd5b6020026020010151614090565b50505050505050505050565b8042811015613d555760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613d9057600080fd5b505afa158015613da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc8919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015613e0557600080fd5b505afa158015613e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3d919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015613e7a57600080fd5b505afa158015613e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb2919061477b565b90506000613ec1848c8b612ee1565b90508981600081518110613ee557634e487b7160e01b600052603260045260246000fd5b60200260200101511115613f0b5760405162461bcd60e51b815260040161023790614c30565b60008082600081518110613f2f57634e487b7160e01b600052603260045260246000fd5b60200260200101518c613f429190615200565b9150811115613f7e57613f7e8a600081518110613f6f57634e487b7160e01b600052603260045260246000fd5b602002602001015189836128b3565b50613fd089600081518110613fa357634e487b7160e01b600052603260045260246000fd5b602002602001015161350a868c60008151811061107157634e487b7160e01b600052603260045260246000fd5b613fdc84828b306129b5565b826001600160a01b031663b390c0ab838360018551613ffb9190615200565b8151811061401957634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b815260040161403e929190614fe8565b600060405180830381600087803b15801561405857600080fd5b505af115801561406c573d6000803e3d6000fd5b50505050614083888260018451613cfd9190615200565b5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040516140ba9190614a3e565b60006040518083038185875af1925050503d80600081146140f7576040519150601f19603f3d011682016040523d82523d6000602084013e6140fc565b606091505b505090508061411d5760405162461bcd60e51b815260040161023790614e91565b505050565b600080600061413185856142a3565b509050600080614142888888612843565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561417a57600080fd5b505afa15801561418e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141b2919061472d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b0316146141f75780826141fa565b81815b90999098509650505050505050565b600080841161422a5760405162461bcd60e51b815260040161023790614d69565b60008311801561423a5750600082115b6142565760405162461bcd60e51b815260040161023790614eee565b6000614264856103e56143ba565b9050600061427282856143ba565b9050600061428c83614286886103e86143ba565b90614400565b905061429881836150ad565b979650505050505050565b600080826001600160a01b0316846001600160a01b031614156142d85760405162461bcd60e51b815260040161023790614dfd565b826001600160a01b0316846001600160a01b0316106142f85782846142fb565b83835b90925090506001600160a01b038216612d415760405162461bcd60e51b815260040161023790614fa8565b60008084116143475760405162461bcd60e51b815260040161023790614cd5565b6000831180156143575750600082115b6143735760405162461bcd60e51b815260040161023790614eee565b600061438b6103e861438586886143ba565b906143ba565b9050600061439f6103e5614385868961442e565b90506143b0600161428683856150ad565b9695505050505050565b60008115806143de575082826143d081836151e1565b92506143dc90836150ad565b145b6143fa5760405162461bcd60e51b815260040161023790614c67565b92915050565b60008261440d8382615095565b91508110156143fa5760405162461bcd60e51b815260040161023790614c9e565b60008261443b8382615200565b91508111156143fa5760405162461bcd60e51b815260040161023790614bc2565b805161020f816152a1565b600082601f830112614477578081fd5b8135602061448c61448783615071565b615047565b82815281810190858301838502870184018810156144a8578586fd5b855b858110156144cf5781356144bd816152a1565b845292840192908401906001016144aa565b5090979650505050505050565b60008083601f8401126144ed578182fd5b50813567ffffffffffffffff811115614504578182fd5b6020830191508360208083028501011115612d4157600080fd5b60008083601f84011261452f578182fd5b50813567ffffffffffffffff811115614546578182fd5b602083019150836020828501011115612d4157600080fd5b80516dffffffffffffffffffffffffffff8116811461020f57600080fd5b60006020828403121561458d578081fd5b8151612ddb816152a1565b60008060008060008060008060a0898b0312156145b3578384fd5b88356145be816152a1565b975060208901356145ce816152a1565b9650604089013567ffffffffffffffff808211156145ea578586fd5b6145f68c838d016144dc565b909850965060608b013591508082111561460e578586fd5b61461a8c838d016144dc565b909650945060808b0135915080821115614632578384fd5b5061463f8b828c0161451e565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561466b578182fd5b8635614676816152a1565b95506020870135614686816152a1565b94506040870135935060608701359250608087013567ffffffffffffffff8111156146af578283fd5b6146bb89828a0161451e565b979a9699509497509295939492505050565b6000602082840312156146de578081fd5b81518015158114612ddb578182fd5b6000602082840312156146fe578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612ddb578182fd5b600080600060608486031215614741578081fd5b61474a8461455e565b92506147586020850161455e565b9150604084015163ffffffff81168114614770578182fd5b809150509250925092565b60006020828403121561478c578081fd5b5051919050565b600080604083850312156147a5578182fd5b8235915060208301356147b7816152a1565b809150509250929050565b600080604083850312156147d4578182fd5b8251915060208301516147b7816152a1565b600080600080608085870312156147fb578182fd5b8451935060208086015167ffffffffffffffff811115614819578384fd5b8601601f81018813614829578384fd5b805161483761448782615071565b81815283810190838501858402850186018c1015614853578788fd5b8794505b8385101561487e57805161486a816152a1565b835260019490940193918501918501614857565b5080975050505050506148936040860161445c565b6060959095015193969295505050565b600080600080608085870312156148b8578182fd5b84359350602085013567ffffffffffffffff8111156148d5578283fd5b6148e187828801614467565b93505060408501356148f2816152a1565b9396929550929360600135925050565b60008060408385031215614914578182fd5b8235915060208084013567ffffffffffffffff80821115614933578384fd5b818601915086601f830112614946578384fd5b8135818111156149585761495861528b565b61496a84601f19601f84011601615047565b9150808252878482850101111561497f578485fd5b8084840185840137810190920192909252919491935090915050565b600080600080600060a086880312156149b2578283fd5b8535945060208601359350604086013567ffffffffffffffff8111156149d6578384fd5b6149e288828901614467565b93505060608601356149f3816152a1565b949793965091946080013592915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251614a50818460208701615217565b9190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015614b7e57835183529284019291840191600101614b62565b50909695505050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526016908201527f4558434553534956455f494e5055545f414d4f554e5400000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252602a908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4f555460408201527f5055545f414d4f554e5400000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a20494e56414c49445f5041544800000000604082015260600190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f494e53554646494349454e545f4f55545055545f414d4f554e54000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b60008582528460208301526001600160a01b03841660408301526080606083015282518060808401526150308160a0850160208701615217565b601f01601f19169190910160a00195945050505050565b60405181810167ffffffffffffffff811182821017156150695761506961528b565b604052919050565b600067ffffffffffffffff82111561508b5761508b61528b565b5060209081020190565b600082198211156150a8576150a8615275565b500190565b6000826150c857634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116150df575061510a565b8187048211156150f1576150f1615275565b808616156150fe57918102915b9490941c9380026150d0565b94509492505050565b6000612ddb600019848460008261512c57506001612ddb565b8161513957506000612ddb565b816001811461514f576002811461515957615186565b6001915050612ddb565b60ff84111561516a5761516a615275565b6001841b91508482111561518057615180615275565b50612ddb565b5060208310610133831016604e8410600b84101617156151b9575081810a838111156151b4576151b4615275565b612ddb565b6151c684848460016150cd565b8086048211156151d8576151d8615275565b02949350505050565b60008160001904831182151516156151fb576151fb615275565b500290565b60008282101561521257615212615275565b500390565b60005b8381101561523257818101518382015260200161521a565b83811115612c255750506000910152565b60008161525257615252615275565b506000190190565b600060001982141561526e5761526e615275565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146152b657600080fd5b5056fea26469706673582212202c7380dd619a0d52a6c7a8b8c79a1218838902a4c693ddafa9e09a21d681b5ee64736f6c63430008000033",
      "bin": "608060405234801561001057600080fd5b506152ef806100206000396000f3fe6080604052600436106100b15760003560e01c80638803dbee11610069578063f23a6e611161004e578063f23a6e61146101b9578063f717cd6d146101d9578063fb3bdb41146101f9576100b1565b80638803dbee1461016c578063bc197c811461018c576100b1565b806338ed17391161009a57806338ed1739146101195780634a25d94a146101395780637ff36ab514610159576100b1565b806301ffc9a7146100b657806318cbafe5146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d13660046146ed565b61020c565b6040516100e39190614b8a565b60405180910390f35b3480156100f857600080fd5b5061010c61010736600461499b565b610214565b6040516100e39190614b46565b34801561012557600080fd5b5061010c61013436600461499b565b6105b8565b34801561014557600080fd5b5061010c61015436600461499b565b610b0c565b61010c6101673660046148a3565b611115565b34801561017857600080fd5b5061010c61018736600461499b565b611549565b34801561019857600080fd5b506101ac6101a7366004614598565b611c42565b6040516100e39190614b95565b3480156101c557600080fd5b506101ac6101d4366004614653565b611c49565b6101ec6101e7366004614793565b611d3c565b6040516100e39190614adb565b61010c6102073660046148a3565b611db9565b60005b919050565b606081428110156102405760405162461bcd60e51b815260040161023790614dc6565b60405180910390fd5b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561027b57600080fd5b505afa15801561028f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b3919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156102f057600080fd5b505afa158015610304573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610328919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036557600080fd5b505afa158015610379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039d919061477b565b90506103d3886000815181106103c357634e487b7160e01b600052603260045260246000fd5b602002602001015133308d612293565b610406886000815181106103f757634e487b7160e01b600052603260045260246000fd5b60200260200101518b84612398565b8960008151811061042757634e487b7160e01b600052603260045260246000fd5b60200260200101819c50826001600160a01b03166001600160a01b03168152505050610454838b8a612694565b94508885600187516104669190615200565b8151811061048457634e487b7160e01b600052603260045260246000fd5b602002602001015110156104aa5760405162461bcd60e51b815260040161023790614e5a565b61055f886000815181106104ce57634e487b7160e01b600052603260045260246000fd5b6020026020010151610531858b6000815181106104fb57634e487b7160e01b600052603260045260246000fd5b60200260200101518c60018151811061052457634e487b7160e01b600052603260045260246000fd5b6020026020010151612843565b8760008151811061055257634e487b7160e01b600052603260045260246000fd5b60200260200101516128b3565b61056b83868a306129b5565b6105ab81866001885161057e9190615200565b8151811061059c57634e487b7160e01b600052603260045260246000fd5b6020026020010151848a612ba2565b5050505095945050505050565b606081428110156105db5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561061657600080fd5b505afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068b57600080fd5b505afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c3919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561070057600080fd5b505afa158015610714573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610738919061457c565b905061075e886000815181106103c357634e487b7160e01b600052603260045260246000fd5b6107918860008151811061078257634e487b7160e01b600052603260045260246000fd5b60200260200101518b83612398565b896000815181106107b257634e487b7160e01b600052603260045260246000fd5b60200260200101819c50826001600160a01b03166001600160a01b0316815250505060008060006108178b60018d516107eb9190615200565b8151811061080957634e487b7160e01b600052603260045260246000fd5b602002602001015185612c2b565b90935091508215801561087057508a60018c516108349190615200565b8151811061085257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b031614155b1561099c578a60018c516108849190615200565b815181106108a257634e487b7160e01b600052603260045260246000fd5b602002602001015190506108b6818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b71906108fe908590600401614fdf565b60206040518083038186803b15801561091657600080fd5b505afa15801561092a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094e919061457c565b8b60018d5161095d9190615200565b8151811061097b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6109a7868e8d612694565b97508b8860018a516109b99190615200565b815181106109d757634e487b7160e01b600052603260045260246000fd5b602002602001015110156109fd5760405162461bcd60e51b815260040161023790614e5a565b610a988b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b6020026020010151610a77888e600081518110610a4e57634e487b7160e01b600052603260045260246000fd5b60200260200101518f60018151811061052457634e487b7160e01b600052603260045260246000fd5b8a60008151811061055257634e487b7160e01b600052603260045260246000fd5b8215610aaf57610aaa86898d8d6129b5565b610afc565b610abb86898d306129b5565b610afc82828a60018c51610acf9190615200565b81518110610aed57634e487b7160e01b600052603260045260246000fd5b6020026020010151878e612de2565b5050505050505095945050505050565b60608142811015610b2f5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6a57600080fd5b505afa158015610b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba2919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610bdf57600080fd5b505afa158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c17919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c919061477b565b9050600088600081518110610cb157634e487b7160e01b600052603260045260246000fd5b60200260200101519050826001600160a01b0316630c0f6b71846001600160a01b0316631bf8ee708c600081518110610cfa57634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b8152600401610d1e9190614adb565b60206040518083038186803b158015610d3657600080fd5b505afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e919061477b565b6040518263ffffffff1660e01b8152600401610d8a9190614fdf565b60206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda919061457c565b89600081518110610dfb57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050610e26848c8b612ee1565b955088600081518110610e4957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8957600080fd5b505afa158015610e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec1919061477b565b610ecc906012615200565b610ed790600a615113565b86600081518110610ef857634e487b7160e01b600052603260045260246000fd5b6020026020010151610f0a91906150ad565b610f15906001615095565b86600081518110610f3657634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508986600081518110610f6457634e487b7160e01b600052603260045260246000fd5b60200260200101511115610f8a5760405162461bcd60e51b815260040161023790614c30565b610fbe81333089600081518110610fb157634e487b7160e01b600052603260045260246000fd5b6020026020010151612293565b610ff18187600081518110610fe357634e487b7160e01b600052603260045260246000fd5b602002602001015185612398565b90508660008151811061101457634e487b7160e01b600052603260045260246000fd5b6020026020010181815250506110bb8960008151811061104457634e487b7160e01b600052603260045260246000fd5b602002602001015161109a868c60008151811061107157634e487b7160e01b600052603260045260246000fd5b60200260200101518d60018151811061052457634e487b7160e01b600052603260045260246000fd5b8860008151811061055257634e487b7160e01b600052603260045260246000fd5b6110c784878b306129b5565b6111078287600189516110da9190615200565b815181106110f857634e487b7160e01b600052603260045260246000fd5b6020026020010151858b612ba2565b505050505095945050505050565b606081428110156111385760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e857600080fd5b505afa1580156111fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611220919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561125d57600080fd5b505afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611295919061457c565b90506112a13482611d3c565b886000815181106112c257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505060008060006112f98b60018d516107eb9190615200565b90935091508215801561135257508a60018c516113169190615200565b8151811061133457634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b031614155b1561147e578a60018c516113669190615200565b8151811061138457634e487b7160e01b600052603260045260246000fd5b60200260200101519050611398818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b71906113e0908590600401614fdf565b60206040518083038186803b1580156113f857600080fd5b505afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611430919061457c565b8b60018d5161143f9190615200565b8151811061145d57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61148986348d612694565b97508b8860018a5161149b9190615200565b815181106114b957634e487b7160e01b600052603260045260246000fd5b602002602001015110156114df5760405162461bcd60e51b815260040161023790614e5a565b6115038b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b821561151a5761151586898d8d6129b5565b61153a565b61152686898d306129b5565b61153a82828a60018c51610acf9190615200565b50505050505050949350505050565b6060814281101561156c5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156115a757600080fd5b505afa1580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561161c57600080fd5b505afa158015611630573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611654919061457c565b905060008760008151811061167957634e487b7160e01b600052603260045260246000fd5b60200260200101519050816001600160a01b0316630c0f6b71836001600160a01b0316631bf8ee708b6000815181106116c257634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b81526004016116e69190614adb565b60206040518083038186803b1580156116fe57600080fd5b505afa158015611712573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611736919061477b565b6040518263ffffffff1660e01b81526004016117529190614fdf565b60206040518083038186803b15801561176a57600080fd5b505afa15801561177e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a2919061457c565b886000815181106117c357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506000806117f88a60018c516107eb9190615200565b90925090506000821580156118c357508a60018c516118179190615200565b8151811061183557634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b7919061457c565b6001600160a01b031614155b156119ef578a60018c516118d79190615200565b815181106118f557634e487b7160e01b600052603260045260246000fd5b60200260200101519050611909818e612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909d506001600160a01b03861690630c0f6b7190611951908590600401614fdf565b60206040518083038186803b15801561196957600080fd5b505afa15801561197d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a1919061457c565b8b60018d516119b09190615200565b815181106119ce57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6119fa868e8d612ee1565b9750836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a3557600080fd5b505afa158015611a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6d919061477b565b611a78906012615200565b611a8390600a615113565b88600081518110611aa457634e487b7160e01b600052603260045260246000fd5b6020026020010151611ab691906150ad565b611ac1906001615095565b88600081518110611ae257634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508b88600081518110611b1057634e487b7160e01b600052603260045260246000fd5b60200260200101511115611b365760405162461bcd60e51b815260040161023790614c30565b611b5d8433308b600081518110610fb157634e487b7160e01b600052603260045260246000fd5b611b908489600081518110611b8257634e487b7160e01b600052603260045260246000fd5b602002602001015187612398565b905088600081518110611bb357634e487b7160e01b600052603260045260246000fd5b602002602001018181525050611be38b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b8215611bf557610aaa86898d8d6129b5565b611c0186898d306129b5565b610afc82828a60018c51611c159190615200565b81518110611c3357634e487b7160e01b600052603260045260246000fd5b6020026020010151888e612de2565b6000806000fd5b600080806060818082611c5e888a018a614902565b80519197509150611c7890820160209081019083016147e6565b92975090955093509150611c8d905033613086565b15611c985788611caa565b611caa89670de0b6b3a76400006151e1565b98508460021415611cc757611cc28985858585613116565b611d0b565b8460031415611cde57611cc2848a85858f8661359d565b8460041415611cf457611cc28985858585613a16565b84600514156100b157611cc2848a85858f86613d34565b507ff23a6e61000000000000000000000000000000000000000000000000000000009b9a5050505050505050505050565b6000816001600160a01b031663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611db191906147c2565b949350505050565b60608142811015611ddc5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1757600080fd5b505afa158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015611e8c57600080fd5b505afa158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec4919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0157600080fd5b505afa158015611f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f39919061457c565b90506000806000611f7e8b60018d51611f529190615200565b81518110611f7057634e487b7160e01b600052603260045260246000fd5b602002602001015186612c2b565b909350915082158015611fd757508a60018c51611f9b9190615200565b81518110611fb957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316846001600160a01b031614155b15612103578a60018c51611feb9190615200565b8151811061200957634e487b7160e01b600052603260045260246000fd5b6020026020010151905061201d818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03861690630c0f6b7190612065908590600401614fdf565b60206040518083038186803b15801561207d57600080fd5b505afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b5919061457c565b8b60018d516120c49190615200565b815181106120e257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61210e868d8d612ee1565b9750348860008151811061213257634e487b7160e01b600052603260045260246000fd5b602002602001015111156121585760405162461bcd60e51b815260040161023790614c30565b61218a8860008151811061217c57634e487b7160e01b600052603260045260246000fd5b602002602001015186611d3c565b8b6000815181106121ab57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506121ef8b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b82156122065761220186898d8d6129b5565b612226565b61221286898d306129b5565b61222682828a60018c51611c159190615200565b8760008151811061224757634e487b7160e01b600052603260045260246000fd5b602002602001015134111561153a5761153a338960008151811061227b57634e487b7160e01b600052603260045260246000fd5b60200260200101513461228e9190615200565b614090565b600080856001600160a01b03166323b872dd8686866040516024016122ba93929190614b09565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516123089190614a3e565b6000604051808303816000865af19150503d8060008114612345576040519150601f19603f3d011682016040523d82523d6000602084013e61234a565b606091505b509150915081801561237457508051158061237457508080602001905181019061237491906146cd565b6123905760405162461bcd60e51b815260040161023790614f4b565b505050505050565b60008083856001600160a01b031663dd62ed3e30866040518363ffffffff1660e01b81526004016123ca929190614aef565b60206040518083038186803b1580156123e257600080fd5b505afa1580156123f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241a919061477b565b10156124bd576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063095ea7b39061246990869060001990600401614b2d565b602060405180830381600087803b15801561248357600080fd5b505af1158015612497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bb91906146cd565b505b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526000906001600160a01b038516906340c10f19906125079089908990600401614b2d565b6040805180830381600087803b15801561252057600080fd5b505af1158015612534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255891906147c2565b506040517f0c0f6b710000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690630c0f6b71906125a1908490600401614fdf565b60206040518083038186803b1580156125b957600080fd5b505afa1580156125cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f1919061457c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081529093506001600160a01b038416906370a0823190612639903090600401614adb565b60206040518083038186803b15801561265157600080fd5b505afa158015612665573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612689919061477b565b915050935093915050565b60606002825110156126b85760405162461bcd60e51b815260040161023790614d32565b815167ffffffffffffffff8111156126e057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612709578160200160208202803683370190505b509050828160008151811061272e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505060005b6001835161274b9190615200565b81101561283b576000806127ba8786858151811061277957634e487b7160e01b600052603260045260246000fd5b60200260200101518786600161278f9190615095565b815181106127ad57634e487b7160e01b600052603260045260246000fd5b6020026020010151614122565b915091506127f08484815181106127e157634e487b7160e01b600052603260045260246000fd5b60200260200101518383614209565b846127fc856001615095565b8151811061281a57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050505080806128339061525a565b91505061273d565b509392505050565b600080600061285285856142a3565b9150915085828260405160200161286a929190614a04565b60405160208183030381529060405280519060200120604051602001612891929190614a5a565b60408051601f1981840301815291905280516020909101209695505050505050565b600080846001600160a01b031663a9059cbb85856040516024016128d8929190614b2d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516129269190614a3e565b6000604051808303816000865af19150503d8060008114612963576040519150601f19603f3d011682016040523d82523d6000602084013e612968565b606091505b509150915081801561299257508051158061299257508080602001905181019061299291906146cd565b6129ae5760405162461bcd60e51b815260040161023790614bf9565b5050505050565b60005b600183516129c69190615200565b8110156129ae576000808483815181106129f057634e487b7160e01b600052603260045260246000fd5b602002602001015185846001612a069190615095565b81518110612a2457634e487b7160e01b600052603260045260246000fd5b6020026020010151915091506000612a3c83836142a3565b509050600087612a4d866001615095565b81518110612a6b57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600080836001600160a01b0316866001600160a01b031614612a9957826000612a9d565b6000835b91509150600060028a51612ab19190615200565b8810612abd5788612aec565b612aec8c878c612ace8c6002615095565b8151811061052457634e487b7160e01b600052603260045260246000fd5b9050612af98c8888612843565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015612b36576020820181803683370190505b506040518563ffffffff1660e01b8152600401612b569493929190614ff6565b600060405180830381600087803b158015612b7057600080fd5b505af1158015612b84573d6000803e3d6000fd5b50505050505050505050508080612b9a9061525a565b9150506129b8565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab90612be99087908790600401614fe8565b600060405180830381600087803b158015612c0357600080fd5b505af1158015612c17573d6000803e3d6000fd5b50505050612c258184614090565b50505050565b600080836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c6757600080fd5b505afa925050508015612c97575060408051601f3d908101601f19168201909252612c949181019061457c565b60015b612d3b576040517f1bf8ee70000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841690631bf8ee7090612ce4908790600401614adb565b60206040518083038186803b158015612cfc57600080fd5b505afa158015612d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d34919061477b565b9050612d41565b50600191505b9250929050565b6000826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612d8357600080fd5b505afa158015612d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dbb919061477b565b612dc6906012615200565b612dd190600a615113565b612ddb90836151e1565b9392505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab90612e299088908790600401614fe8565b600060405180830381600087803b158015612e4357600080fd5b505af1158015612e57573d6000803e3d6000fd5b505050506129ae8482866001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612e8c9190614adb565b60206040518083038186803b158015612ea457600080fd5b505afa158015612eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edc919061477b565b6128b3565b6060600282511015612f055760405162461bcd60e51b815260040161023790614d32565b815167ffffffffffffffff811115612f2d57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612f56578160200160208202803683370190505b509050828160018351612f699190615200565b81518110612f8757634e487b7160e01b600052603260045260246000fd5b602002602001018181525050600060018351612fa39190615200565b90505b801561283b576000806130058786612fbf600187615200565b81518110612fdd57634e487b7160e01b600052603260045260246000fd5b60200260200101518786815181106127ad57634e487b7160e01b600052603260045260246000fd5b9150915061303b84848151811061302c57634e487b7160e01b600052603260045260246000fd5b60200260200101518383614326565b84613047600186615200565b8151811061306557634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505050808061307e90615243565b915050612fa6565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c157600080fd5b505afa9250505080156130f1575060408051601f3d908101601f191682019092526130ee9181019061477b565b60015b6130fd5750601261020f565b8060011461310b578061310e565b60005b91505061020f565b80428110156131375760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561317257600080fd5b505afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156131e757600080fd5b505afa1580156131fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321f919061457c565b905060008060006132388960018b516107eb9190615200565b90935091508215801561330157508860018a516132559190615200565b8151811061327357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132bd57600080fd5b505afa1580156132d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f5919061457c565b6001600160a01b031614155b1561342d578860018a516133159190615200565b8151811061333357634e487b7160e01b600052603260045260246000fd5b60200260200101519050613347818b612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909a506001600160a01b03851690630c0f6b719061338f908590600401614fdf565b60206040518083038186803b1580156133a757600080fd5b505afa1580156133bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133df919061457c565b8960018b516133ee9190615200565b8151811061340c57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b600061343a868d8c612694565b90508a816001835161344c9190615200565b8151811061346a57634e487b7160e01b600052603260045260246000fd5b602002602001015110156134905760405162461bcd60e51b815260040161023790614e5a565b61352b8a6000815181106134b457634e487b7160e01b600052603260045260246000fd5b602002602001015161350a888d6000815181106134e157634e487b7160e01b600052603260045260246000fd5b60200260200101518e60018151811061052457634e487b7160e01b600052603260045260246000fd5b8360008151811061055257634e487b7160e01b600052603260045260246000fd5b83156135425761353d86828c8c6129b5565b61358f565b61354e86828c306129b5565b61358f838383600185516135629190615200565b8151811061358057634e487b7160e01b600052603260045260246000fd5b6020026020010151888d612de2565b505050505050505050505050565b80428110156135be5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156135f957600080fd5b505afa15801561360d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613631919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561366e57600080fd5b505afa158015613682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a6919061457c565b905060008060006136bf8a60018c516107eb9190615200565b90935091508215801561378857508960018b516136dc9190615200565b815181106136fa57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561374457600080fd5b505afa158015613758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377c919061457c565b6001600160a01b031614155b156138b4578960018b5161379c9190615200565b815181106137ba57634e487b7160e01b600052603260045260246000fd5b602002602001015190506137ce818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b7190613816908590600401614fdf565b60206040518083038186803b15801561382e57600080fd5b505afa158015613842573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613866919061457c565b8a60018c516138759190615200565b8151811061389357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b60006138c1868e8d612ee1565b90508b816000815181106138e557634e487b7160e01b600052603260045260246000fd5b6020026020010151111561390b5760405162461bcd60e51b815260040161023790614c30565b6000808260008151811061392f57634e487b7160e01b600052603260045260246000fd5b60200260200101518e6139429190615200565b915081111561397e5761397e8c60008151811061396f57634e487b7160e01b600052603260045260246000fd5b60200260200101518b836128b3565b506139d08b6000815181106139a357634e487b7160e01b600052603260045260246000fd5b602002602001015161350a888e600081518110610a4e57634e487b7160e01b600052603260045260246000fd5b83156139e7576139e286828d8d6129b5565b613a07565b6139f386828d306129b5565b613a0783838360018551611c159190615200565b50505050505050505050505050565b8042811015613a375760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613a7257600080fd5b505afa158015613a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aaa919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1f919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015613b5c57600080fd5b505afa158015613b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b94919061477b565b90506000613ba3848b8a612694565b9050888160018351613bb59190615200565b81518110613bd357634e487b7160e01b600052603260045260246000fd5b60200260200101511015613bf95760405162461bcd60e51b815260040161023790614e5a565b613c4a88600081518110613c1d57634e487b7160e01b600052603260045260246000fd5b602002602001015161350a868b6000815181106104fb57634e487b7160e01b600052603260045260246000fd5b613c5684828a306129b5565b826001600160a01b031663b390c0ab838360018551613c759190615200565b81518110613c9357634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b8152600401613cb8929190614fe8565b600060405180830381600087803b158015613cd257600080fd5b505af1158015613ce6573d6000803e3d6000fd5b50505050613d28878260018451613cfd9190615200565b81518110613d1b57634e487b7160e01b600052603260045260246000fd5b6020026020010151614090565b50505050505050505050565b8042811015613d555760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613d9057600080fd5b505afa158015613da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc8919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015613e0557600080fd5b505afa158015613e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3d919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015613e7a57600080fd5b505afa158015613e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb2919061477b565b90506000613ec1848c8b612ee1565b90508981600081518110613ee557634e487b7160e01b600052603260045260246000fd5b60200260200101511115613f0b5760405162461bcd60e51b815260040161023790614c30565b60008082600081518110613f2f57634e487b7160e01b600052603260045260246000fd5b60200260200101518c613f429190615200565b9150811115613f7e57613f7e8a600081518110613f6f57634e487b7160e01b600052603260045260246000fd5b602002602001015189836128b3565b50613fd089600081518110613fa357634e487b7160e01b600052603260045260246000fd5b602002602001015161350a868c60008151811061107157634e487b7160e01b600052603260045260246000fd5b613fdc84828b306129b5565b826001600160a01b031663b390c0ab838360018551613ffb9190615200565b8151811061401957634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b815260040161403e929190614fe8565b600060405180830381600087803b15801561405857600080fd5b505af115801561406c573d6000803e3d6000fd5b50505050614083888260018451613cfd9190615200565b5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040516140ba9190614a3e565b60006040518083038185875af1925050503d80600081146140f7576040519150601f19603f3d011682016040523d82523d6000602084013e6140fc565b606091505b505090508061411d5760405162461bcd60e51b815260040161023790614e91565b505050565b600080600061413185856142a3565b509050600080614142888888612843565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561417a57600080fd5b505afa15801561418e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141b2919061472d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b0316146141f75780826141fa565b81815b90999098509650505050505050565b600080841161422a5760405162461bcd60e51b815260040161023790614d69565b60008311801561423a5750600082115b6142565760405162461bcd60e51b815260040161023790614eee565b6000614264856103e56143ba565b9050600061427282856143ba565b9050600061428c83614286886103e86143ba565b90614400565b905061429881836150ad565b979650505050505050565b600080826001600160a01b0316846001600160a01b031614156142d85760405162461bcd60e51b815260040161023790614dfd565b826001600160a01b0316846001600160a01b0316106142f85782846142fb565b83835b90925090506001600160a01b038216612d415760405162461bcd60e51b815260040161023790614fa8565b60008084116143475760405162461bcd60e51b815260040161023790614cd5565b6000831180156143575750600082115b6143735760405162461bcd60e51b815260040161023790614eee565b600061438b6103e861438586886143ba565b906143ba565b9050600061439f6103e5614385868961442e565b90506143b0600161428683856150ad565b9695505050505050565b60008115806143de575082826143d081836151e1565b92506143dc90836150ad565b145b6143fa5760405162461bcd60e51b815260040161023790614c67565b92915050565b60008261440d8382615095565b91508110156143fa5760405162461bcd60e51b815260040161023790614c9e565b60008261443b8382615200565b91508111156143fa5760405162461bcd60e51b815260040161023790614bc2565b805161020f816152a1565b600082601f830112614477578081fd5b8135602061448c61448783615071565b615047565b82815281810190858301838502870184018810156144a8578586fd5b855b858110156144cf5781356144bd816152a1565b845292840192908401906001016144aa565b5090979650505050505050565b60008083601f8401126144ed578182fd5b50813567ffffffffffffffff811115614504578182fd5b6020830191508360208083028501011115612d4157600080fd5b60008083601f84011261452f578182fd5b50813567ffffffffffffffff811115614546578182fd5b602083019150836020828501011115612d4157600080fd5b80516dffffffffffffffffffffffffffff8116811461020f57600080fd5b60006020828403121561458d578081fd5b8151612ddb816152a1565b60008060008060008060008060a0898b0312156145b3578384fd5b88356145be816152a1565b975060208901356145ce816152a1565b9650604089013567ffffffffffffffff808211156145ea578586fd5b6145f68c838d016144dc565b909850965060608b013591508082111561460e578586fd5b61461a8c838d016144dc565b909650945060808b0135915080821115614632578384fd5b5061463f8b828c0161451e565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561466b578182fd5b8635614676816152a1565b95506020870135614686816152a1565b94506040870135935060608701359250608087013567ffffffffffffffff8111156146af578283fd5b6146bb89828a0161451e565b979a9699509497509295939492505050565b6000602082840312156146de578081fd5b81518015158114612ddb578182fd5b6000602082840312156146fe578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612ddb578182fd5b600080600060608486031215614741578081fd5b61474a8461455e565b92506147586020850161455e565b9150604084015163ffffffff81168114614770578182fd5b809150509250925092565b60006020828403121561478c578081fd5b5051919050565b600080604083850312156147a5578182fd5b8235915060208301356147b7816152a1565b809150509250929050565b600080604083850312156147d4578182fd5b8251915060208301516147b7816152a1565b600080600080608085870312156147fb578182fd5b8451935060208086015167ffffffffffffffff811115614819578384fd5b8601601f81018813614829578384fd5b805161483761448782615071565b81815283810190838501858402850186018c1015614853578788fd5b8794505b8385101561487e57805161486a816152a1565b835260019490940193918501918501614857565b5080975050505050506148936040860161445c565b6060959095015193969295505050565b600080600080608085870312156148b8578182fd5b84359350602085013567ffffffffffffffff8111156148d5578283fd5b6148e187828801614467565b93505060408501356148f2816152a1565b9396929550929360600135925050565b60008060408385031215614914578182fd5b8235915060208084013567ffffffffffffffff80821115614933578384fd5b818601915086601f830112614946578384fd5b8135818111156149585761495861528b565b61496a84601f19601f84011601615047565b9150808252878482850101111561497f578485fd5b8084840185840137810190920192909252919491935090915050565b600080600080600060a086880312156149b2578283fd5b8535945060208601359350604086013567ffffffffffffffff8111156149d6578384fd5b6149e288828901614467565b93505060608601356149f3816152a1565b949793965091946080013592915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251614a50818460208701615217565b9190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015614b7e57835183529284019291840191600101614b62565b50909695505050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526016908201527f4558434553534956455f494e5055545f414d4f554e5400000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252602a908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4f555460408201527f5055545f414d4f554e5400000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a20494e56414c49445f5041544800000000604082015260600190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f494e53554646494349454e545f4f55545055545f414d4f554e54000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b60008582528460208301526001600160a01b03841660408301526080606083015282518060808401526150308160a0850160208701615217565b601f01601f19169190910160a00195945050505050565b60405181810167ffffffffffffffff811182821017156150695761506961528b565b604052919050565b600067ffffffffffffffff82111561508b5761508b61528b565b5060209081020190565b600082198211156150a8576150a8615275565b500190565b6000826150c857634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116150df575061510a565b8187048211156150f1576150f1615275565b808616156150fe57918102915b9490941c9380026150d0565b94509492505050565b6000612ddb600019848460008261512c57506001612ddb565b8161513957506000612ddb565b816001811461514f576002811461515957615186565b6001915050612ddb565b60ff84111561516a5761516a615275565b6001841b91508482111561518057615180615275565b50612ddb565b5060208310610133831016604e8410600b84101617156151b9575081810a838111156151b4576151b4615275565b612ddb565b6151c684848460016150cd565b8086048211156151d8576151d8615275565b02949350505050565b60008160001904831182151516156151fb576151fb615275565b500290565b60008282101561521257615212615275565b500390565b60005b8381101561523257818101518382015260200161521a565b83811115612c255750506000910152565b60008161525257615252615275565b506000190190565b600060001982141561526e5761526e615275565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146152b657600080fd5b5056fea26469706673582212202c7380dd619a0d52a6c7a8b8c79a1218838902a4c693ddafa9e09a21d681b5ee64736f6c63430008000033",
      "bin-runtime": "6080604052600436106100b15760003560e01c80638803dbee11610069578063f23a6e611161004e578063f23a6e61146101b9578063f717cd6d146101d9578063fb3bdb41146101f9576100b1565b80638803dbee1461016c578063bc197c811461018c576100b1565b806338ed17391161009a57806338ed1739146101195780634a25d94a146101395780637ff36ab514610159576100b1565b806301ffc9a7146100b657806318cbafe5146100ec575b600080fd5b3480156100c257600080fd5b506100d66100d13660046146ed565b61020c565b6040516100e39190614b8a565b60405180910390f35b3480156100f857600080fd5b5061010c61010736600461499b565b610214565b6040516100e39190614b46565b34801561012557600080fd5b5061010c61013436600461499b565b6105b8565b34801561014557600080fd5b5061010c61015436600461499b565b610b0c565b61010c6101673660046148a3565b611115565b34801561017857600080fd5b5061010c61018736600461499b565b611549565b34801561019857600080fd5b506101ac6101a7366004614598565b611c42565b6040516100e39190614b95565b3480156101c557600080fd5b506101ac6101d4366004614653565b611c49565b6101ec6101e7366004614793565b611d3c565b6040516100e39190614adb565b61010c6102073660046148a3565b611db9565b60005b919050565b606081428110156102405760405162461bcd60e51b815260040161023790614dc6565b60405180910390fd5b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561027b57600080fd5b505afa15801561028f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b3919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156102f057600080fd5b505afa158015610304573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610328919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036557600080fd5b505afa158015610379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039d919061477b565b90506103d3886000815181106103c357634e487b7160e01b600052603260045260246000fd5b602002602001015133308d612293565b610406886000815181106103f757634e487b7160e01b600052603260045260246000fd5b60200260200101518b84612398565b8960008151811061042757634e487b7160e01b600052603260045260246000fd5b60200260200101819c50826001600160a01b03166001600160a01b03168152505050610454838b8a612694565b94508885600187516104669190615200565b8151811061048457634e487b7160e01b600052603260045260246000fd5b602002602001015110156104aa5760405162461bcd60e51b815260040161023790614e5a565b61055f886000815181106104ce57634e487b7160e01b600052603260045260246000fd5b6020026020010151610531858b6000815181106104fb57634e487b7160e01b600052603260045260246000fd5b60200260200101518c60018151811061052457634e487b7160e01b600052603260045260246000fd5b6020026020010151612843565b8760008151811061055257634e487b7160e01b600052603260045260246000fd5b60200260200101516128b3565b61056b83868a306129b5565b6105ab81866001885161057e9190615200565b8151811061059c57634e487b7160e01b600052603260045260246000fd5b6020026020010151848a612ba2565b5050505095945050505050565b606081428110156105db5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561061657600080fd5b505afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068b57600080fd5b505afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c3919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561070057600080fd5b505afa158015610714573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610738919061457c565b905061075e886000815181106103c357634e487b7160e01b600052603260045260246000fd5b6107918860008151811061078257634e487b7160e01b600052603260045260246000fd5b60200260200101518b83612398565b896000815181106107b257634e487b7160e01b600052603260045260246000fd5b60200260200101819c50826001600160a01b03166001600160a01b0316815250505060008060006108178b60018d516107eb9190615200565b8151811061080957634e487b7160e01b600052603260045260246000fd5b602002602001015185612c2b565b90935091508215801561087057508a60018c516108349190615200565b8151811061085257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b031614155b1561099c578a60018c516108849190615200565b815181106108a257634e487b7160e01b600052603260045260246000fd5b602002602001015190506108b6818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b71906108fe908590600401614fdf565b60206040518083038186803b15801561091657600080fd5b505afa15801561092a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094e919061457c565b8b60018d5161095d9190615200565b8151811061097b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6109a7868e8d612694565b97508b8860018a516109b99190615200565b815181106109d757634e487b7160e01b600052603260045260246000fd5b602002602001015110156109fd5760405162461bcd60e51b815260040161023790614e5a565b610a988b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b6020026020010151610a77888e600081518110610a4e57634e487b7160e01b600052603260045260246000fd5b60200260200101518f60018151811061052457634e487b7160e01b600052603260045260246000fd5b8a60008151811061055257634e487b7160e01b600052603260045260246000fd5b8215610aaf57610aaa86898d8d6129b5565b610afc565b610abb86898d306129b5565b610afc82828a60018c51610acf9190615200565b81518110610aed57634e487b7160e01b600052603260045260246000fd5b6020026020010151878e612de2565b5050505050505095945050505050565b60608142811015610b2f5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6a57600080fd5b505afa158015610b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba2919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610bdf57600080fd5b505afa158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c17919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c919061477b565b9050600088600081518110610cb157634e487b7160e01b600052603260045260246000fd5b60200260200101519050826001600160a01b0316630c0f6b71846001600160a01b0316631bf8ee708c600081518110610cfa57634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b8152600401610d1e9190614adb565b60206040518083038186803b158015610d3657600080fd5b505afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e919061477b565b6040518263ffffffff1660e01b8152600401610d8a9190614fdf565b60206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda919061457c565b89600081518110610dfb57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050610e26848c8b612ee1565b955088600081518110610e4957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8957600080fd5b505afa158015610e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec1919061477b565b610ecc906012615200565b610ed790600a615113565b86600081518110610ef857634e487b7160e01b600052603260045260246000fd5b6020026020010151610f0a91906150ad565b610f15906001615095565b86600081518110610f3657634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508986600081518110610f6457634e487b7160e01b600052603260045260246000fd5b60200260200101511115610f8a5760405162461bcd60e51b815260040161023790614c30565b610fbe81333089600081518110610fb157634e487b7160e01b600052603260045260246000fd5b6020026020010151612293565b610ff18187600081518110610fe357634e487b7160e01b600052603260045260246000fd5b602002602001015185612398565b90508660008151811061101457634e487b7160e01b600052603260045260246000fd5b6020026020010181815250506110bb8960008151811061104457634e487b7160e01b600052603260045260246000fd5b602002602001015161109a868c60008151811061107157634e487b7160e01b600052603260045260246000fd5b60200260200101518d60018151811061052457634e487b7160e01b600052603260045260246000fd5b8860008151811061055257634e487b7160e01b600052603260045260246000fd5b6110c784878b306129b5565b6111078287600189516110da9190615200565b815181106110f857634e487b7160e01b600052603260045260246000fd5b6020026020010151858b612ba2565b505050505095945050505050565b606081428110156111385760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e857600080fd5b505afa1580156111fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611220919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561125d57600080fd5b505afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611295919061457c565b90506112a13482611d3c565b886000815181106112c257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505060008060006112f98b60018d516107eb9190615200565b90935091508215801561135257508a60018c516113169190615200565b8151811061133457634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b031614155b1561147e578a60018c516113669190615200565b8151811061138457634e487b7160e01b600052603260045260246000fd5b60200260200101519050611398818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b71906113e0908590600401614fdf565b60206040518083038186803b1580156113f857600080fd5b505afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611430919061457c565b8b60018d5161143f9190615200565b8151811061145d57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61148986348d612694565b97508b8860018a5161149b9190615200565b815181106114b957634e487b7160e01b600052603260045260246000fd5b602002602001015110156114df5760405162461bcd60e51b815260040161023790614e5a565b6115038b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b821561151a5761151586898d8d6129b5565b61153a565b61152686898d306129b5565b61153a82828a60018c51610acf9190615200565b50505050505050949350505050565b6060814281101561156c5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156115a757600080fd5b505afa1580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561161c57600080fd5b505afa158015611630573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611654919061457c565b905060008760008151811061167957634e487b7160e01b600052603260045260246000fd5b60200260200101519050816001600160a01b0316630c0f6b71836001600160a01b0316631bf8ee708b6000815181106116c257634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b81526004016116e69190614adb565b60206040518083038186803b1580156116fe57600080fd5b505afa158015611712573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611736919061477b565b6040518263ffffffff1660e01b81526004016117529190614fdf565b60206040518083038186803b15801561176a57600080fd5b505afa15801561177e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a2919061457c565b886000815181106117c357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506000806117f88a60018c516107eb9190615200565b90925090506000821580156118c357508a60018c516118179190615200565b8151811061183557634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b7919061457c565b6001600160a01b031614155b156119ef578a60018c516118d79190615200565b815181106118f557634e487b7160e01b600052603260045260246000fd5b60200260200101519050611909818e612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909d506001600160a01b03861690630c0f6b7190611951908590600401614fdf565b60206040518083038186803b15801561196957600080fd5b505afa15801561197d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a1919061457c565b8b60018d516119b09190615200565b815181106119ce57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6119fa868e8d612ee1565b9750836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a3557600080fd5b505afa158015611a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6d919061477b565b611a78906012615200565b611a8390600a615113565b88600081518110611aa457634e487b7160e01b600052603260045260246000fd5b6020026020010151611ab691906150ad565b611ac1906001615095565b88600081518110611ae257634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508b88600081518110611b1057634e487b7160e01b600052603260045260246000fd5b60200260200101511115611b365760405162461bcd60e51b815260040161023790614c30565b611b5d8433308b600081518110610fb157634e487b7160e01b600052603260045260246000fd5b611b908489600081518110611b8257634e487b7160e01b600052603260045260246000fd5b602002602001015187612398565b905088600081518110611bb357634e487b7160e01b600052603260045260246000fd5b602002602001018181525050611be38b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b8215611bf557610aaa86898d8d6129b5565b611c0186898d306129b5565b610afc82828a60018c51611c159190615200565b81518110611c3357634e487b7160e01b600052603260045260246000fd5b6020026020010151888e612de2565b6000806000fd5b600080806060818082611c5e888a018a614902565b80519197509150611c7890820160209081019083016147e6565b92975090955093509150611c8d905033613086565b15611c985788611caa565b611caa89670de0b6b3a76400006151e1565b98508460021415611cc757611cc28985858585613116565b611d0b565b8460031415611cde57611cc2848a85858f8661359d565b8460041415611cf457611cc28985858585613a16565b84600514156100b157611cc2848a85858f86613d34565b507ff23a6e61000000000000000000000000000000000000000000000000000000009b9a5050505050505050505050565b6000816001600160a01b031663ce1570dc846040518263ffffffff1660e01b815260040160408051808303818588803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611db191906147c2565b949350505050565b60608142811015611ddc5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1757600080fd5b505afa158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015611e8c57600080fd5b505afa158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec4919061457c565b90506000306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0157600080fd5b505afa158015611f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f39919061457c565b90506000806000611f7e8b60018d51611f529190615200565b81518110611f7057634e487b7160e01b600052603260045260246000fd5b602002602001015186612c2b565b909350915082158015611fd757508a60018c51611f9b9190615200565b81518110611fb957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316846001600160a01b031614155b15612103578a60018c51611feb9190615200565b8151811061200957634e487b7160e01b600052603260045260246000fd5b6020026020010151905061201d818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03861690630c0f6b7190612065908590600401614fdf565b60206040518083038186803b15801561207d57600080fd5b505afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b5919061457c565b8b60018d516120c49190615200565b815181106120e257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61210e868d8d612ee1565b9750348860008151811061213257634e487b7160e01b600052603260045260246000fd5b602002602001015111156121585760405162461bcd60e51b815260040161023790614c30565b61218a8860008151811061217c57634e487b7160e01b600052603260045260246000fd5b602002602001015186611d3c565b8b6000815181106121ab57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506121ef8b600081518110610a2157634e487b7160e01b600052603260045260246000fd5b82156122065761220186898d8d6129b5565b612226565b61221286898d306129b5565b61222682828a60018c51611c159190615200565b8760008151811061224757634e487b7160e01b600052603260045260246000fd5b602002602001015134111561153a5761153a338960008151811061227b57634e487b7160e01b600052603260045260246000fd5b60200260200101513461228e9190615200565b614090565b600080856001600160a01b03166323b872dd8686866040516024016122ba93929190614b09565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516123089190614a3e565b6000604051808303816000865af19150503d8060008114612345576040519150601f19603f3d011682016040523d82523d6000602084013e61234a565b606091505b509150915081801561237457508051158061237457508080602001905181019061237491906146cd565b6123905760405162461bcd60e51b815260040161023790614f4b565b505050505050565b60008083856001600160a01b031663dd62ed3e30866040518363ffffffff1660e01b81526004016123ca929190614aef565b60206040518083038186803b1580156123e257600080fd5b505afa1580156123f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241a919061477b565b10156124bd576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063095ea7b39061246990869060001990600401614b2d565b602060405180830381600087803b15801561248357600080fd5b505af1158015612497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bb91906146cd565b505b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526000906001600160a01b038516906340c10f19906125079089908990600401614b2d565b6040805180830381600087803b15801561252057600080fd5b505af1158015612534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255891906147c2565b506040517f0c0f6b710000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690630c0f6b71906125a1908490600401614fdf565b60206040518083038186803b1580156125b957600080fd5b505afa1580156125cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f1919061457c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081529093506001600160a01b038416906370a0823190612639903090600401614adb565b60206040518083038186803b15801561265157600080fd5b505afa158015612665573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612689919061477b565b915050935093915050565b60606002825110156126b85760405162461bcd60e51b815260040161023790614d32565b815167ffffffffffffffff8111156126e057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612709578160200160208202803683370190505b509050828160008151811061272e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505060005b6001835161274b9190615200565b81101561283b576000806127ba8786858151811061277957634e487b7160e01b600052603260045260246000fd5b60200260200101518786600161278f9190615095565b815181106127ad57634e487b7160e01b600052603260045260246000fd5b6020026020010151614122565b915091506127f08484815181106127e157634e487b7160e01b600052603260045260246000fd5b60200260200101518383614209565b846127fc856001615095565b8151811061281a57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050505080806128339061525a565b91505061273d565b509392505050565b600080600061285285856142a3565b9150915085828260405160200161286a929190614a04565b60405160208183030381529060405280519060200120604051602001612891929190614a5a565b60408051601f1981840301815291905280516020909101209695505050505050565b600080846001600160a01b031663a9059cbb85856040516024016128d8929190614b2d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516129269190614a3e565b6000604051808303816000865af19150503d8060008114612963576040519150601f19603f3d011682016040523d82523d6000602084013e612968565b606091505b509150915081801561299257508051158061299257508080602001905181019061299291906146cd565b6129ae5760405162461bcd60e51b815260040161023790614bf9565b5050505050565b60005b600183516129c69190615200565b8110156129ae576000808483815181106129f057634e487b7160e01b600052603260045260246000fd5b602002602001015185846001612a069190615095565b81518110612a2457634e487b7160e01b600052603260045260246000fd5b6020026020010151915091506000612a3c83836142a3565b509050600087612a4d866001615095565b81518110612a6b57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600080836001600160a01b0316866001600160a01b031614612a9957826000612a9d565b6000835b91509150600060028a51612ab19190615200565b8810612abd5788612aec565b612aec8c878c612ace8c6002615095565b8151811061052457634e487b7160e01b600052603260045260246000fd5b9050612af98c8888612843565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015612b36576020820181803683370190505b506040518563ffffffff1660e01b8152600401612b569493929190614ff6565b600060405180830381600087803b158015612b7057600080fd5b505af1158015612b84573d6000803e3d6000fd5b50505050505050505050508080612b9a9061525a565b9150506129b8565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab90612be99087908790600401614fe8565b600060405180830381600087803b158015612c0357600080fd5b505af1158015612c17573d6000803e3d6000fd5b50505050612c258184614090565b50505050565b600080836001600160a01b0316631836b97d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c6757600080fd5b505afa925050508015612c97575060408051601f3d908101601f19168201909252612c949181019061457c565b60015b612d3b576040517f1bf8ee70000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841690631bf8ee7090612ce4908790600401614adb565b60206040518083038186803b158015612cfc57600080fd5b505afa158015612d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d34919061477b565b9050612d41565b50600191505b9250929050565b6000826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612d8357600080fd5b505afa158015612d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dbb919061477b565b612dc6906012615200565b612dd190600a615113565b612ddb90836151e1565b9392505050565b6040517fb390c0ab0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063b390c0ab90612e299088908790600401614fe8565b600060405180830381600087803b158015612e4357600080fd5b505af1158015612e57573d6000803e3d6000fd5b505050506129ae8482866001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612e8c9190614adb565b60206040518083038186803b158015612ea457600080fd5b505afa158015612eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edc919061477b565b6128b3565b6060600282511015612f055760405162461bcd60e51b815260040161023790614d32565b815167ffffffffffffffff811115612f2d57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612f56578160200160208202803683370190505b509050828160018351612f699190615200565b81518110612f8757634e487b7160e01b600052603260045260246000fd5b602002602001018181525050600060018351612fa39190615200565b90505b801561283b576000806130058786612fbf600187615200565b81518110612fdd57634e487b7160e01b600052603260045260246000fd5b60200260200101518786815181106127ad57634e487b7160e01b600052603260045260246000fd5b9150915061303b84848151811061302c57634e487b7160e01b600052603260045260246000fd5b60200260200101518383614326565b84613047600186615200565b8151811061306557634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505050808061307e90615243565b915050612fa6565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c157600080fd5b505afa9250505080156130f1575060408051601f3d908101601f191682019092526130ee9181019061477b565b60015b6130fd5750601261020f565b8060011461310b578061310e565b60005b91505061020f565b80428110156131375760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561317257600080fd5b505afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156131e757600080fd5b505afa1580156131fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321f919061457c565b905060008060006132388960018b516107eb9190615200565b90935091508215801561330157508860018a516132559190615200565b8151811061327357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132bd57600080fd5b505afa1580156132d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f5919061457c565b6001600160a01b031614155b1561342d578860018a516133159190615200565b8151811061333357634e487b7160e01b600052603260045260246000fd5b60200260200101519050613347818b612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909a506001600160a01b03851690630c0f6b719061338f908590600401614fdf565b60206040518083038186803b1580156133a757600080fd5b505afa1580156133bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133df919061457c565b8960018b516133ee9190615200565b8151811061340c57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b600061343a868d8c612694565b90508a816001835161344c9190615200565b8151811061346a57634e487b7160e01b600052603260045260246000fd5b602002602001015110156134905760405162461bcd60e51b815260040161023790614e5a565b61352b8a6000815181106134b457634e487b7160e01b600052603260045260246000fd5b602002602001015161350a888d6000815181106134e157634e487b7160e01b600052603260045260246000fd5b60200260200101518e60018151811061052457634e487b7160e01b600052603260045260246000fd5b8360008151811061055257634e487b7160e01b600052603260045260246000fd5b83156135425761353d86828c8c6129b5565b61358f565b61354e86828c306129b5565b61358f838383600185516135629190615200565b8151811061358057634e487b7160e01b600052603260045260246000fd5b6020026020010151888d612de2565b505050505050505050505050565b80428110156135be5760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156135f957600080fd5b505afa15801561360d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613631919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561366e57600080fd5b505afa158015613682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a6919061457c565b905060008060006136bf8a60018c516107eb9190615200565b90935091508215801561378857508960018b516136dc9190615200565b815181106136fa57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316306001600160a01b031663f4734b0c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561374457600080fd5b505afa158015613758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377c919061457c565b6001600160a01b031614155b156138b4578960018b5161379c9190615200565b815181106137ba57634e487b7160e01b600052603260045260246000fd5b602002602001015190506137ce818d612d48565b6040517f0c0f6b71000000000000000000000000000000000000000000000000000000008152909c506001600160a01b03851690630c0f6b7190613816908590600401614fdf565b60206040518083038186803b15801561382e57600080fd5b505afa158015613842573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613866919061457c565b8a60018c516138759190615200565b8151811061389357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b60006138c1868e8d612ee1565b90508b816000815181106138e557634e487b7160e01b600052603260045260246000fd5b6020026020010151111561390b5760405162461bcd60e51b815260040161023790614c30565b6000808260008151811061392f57634e487b7160e01b600052603260045260246000fd5b60200260200101518e6139429190615200565b915081111561397e5761397e8c60008151811061396f57634e487b7160e01b600052603260045260246000fd5b60200260200101518b836128b3565b506139d08b6000815181106139a357634e487b7160e01b600052603260045260246000fd5b602002602001015161350a888e600081518110610a4e57634e487b7160e01b600052603260045260246000fd5b83156139e7576139e286828d8d6129b5565b613a07565b6139f386828d306129b5565b613a0783838360018551611c159190615200565b50505050505050505050505050565b8042811015613a375760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613a7257600080fd5b505afa158015613a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aaa919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1f919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015613b5c57600080fd5b505afa158015613b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b94919061477b565b90506000613ba3848b8a612694565b9050888160018351613bb59190615200565b81518110613bd357634e487b7160e01b600052603260045260246000fd5b60200260200101511015613bf95760405162461bcd60e51b815260040161023790614e5a565b613c4a88600081518110613c1d57634e487b7160e01b600052603260045260246000fd5b602002602001015161350a868b6000815181106104fb57634e487b7160e01b600052603260045260246000fd5b613c5684828a306129b5565b826001600160a01b031663b390c0ab838360018551613c759190615200565b81518110613c9357634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b8152600401613cb8929190614fe8565b600060405180830381600087803b158015613cd257600080fd5b505af1158015613ce6573d6000803e3d6000fd5b50505050613d28878260018451613cfd9190615200565b81518110613d1b57634e487b7160e01b600052603260045260246000fd5b6020026020010151614090565b50505050505050505050565b8042811015613d555760405162461bcd60e51b815260040161023790614dc6565b6000306001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613d9057600080fd5b505afa158015613da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc8919061457c565b90506000306001600160a01b0316631b5f58c86040518163ffffffff1660e01b815260040160206040518083038186803b158015613e0557600080fd5b505afa158015613e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3d919061457c565b90506000306001600160a01b031663be745fff6040518163ffffffff1660e01b815260040160206040518083038186803b158015613e7a57600080fd5b505afa158015613e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb2919061477b565b90506000613ec1848c8b612ee1565b90508981600081518110613ee557634e487b7160e01b600052603260045260246000fd5b60200260200101511115613f0b5760405162461bcd60e51b815260040161023790614c30565b60008082600081518110613f2f57634e487b7160e01b600052603260045260246000fd5b60200260200101518c613f429190615200565b9150811115613f7e57613f7e8a600081518110613f6f57634e487b7160e01b600052603260045260246000fd5b602002602001015189836128b3565b50613fd089600081518110613fa357634e487b7160e01b600052603260045260246000fd5b602002602001015161350a868c60008151811061107157634e487b7160e01b600052603260045260246000fd5b613fdc84828b306129b5565b826001600160a01b031663b390c0ab838360018551613ffb9190615200565b8151811061401957634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b815260040161403e929190614fe8565b600060405180830381600087803b15801561405857600080fd5b505af115801561406c573d6000803e3d6000fd5b50505050614083888260018451613cfd9190615200565b5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040516140ba9190614a3e565b60006040518083038185875af1925050503d80600081146140f7576040519150601f19603f3d011682016040523d82523d6000602084013e6140fc565b606091505b505090508061411d5760405162461bcd60e51b815260040161023790614e91565b505050565b600080600061413185856142a3565b509050600080614142888888612843565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561417a57600080fd5b505afa15801561418e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141b2919061472d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b0316146141f75780826141fa565b81815b90999098509650505050505050565b600080841161422a5760405162461bcd60e51b815260040161023790614d69565b60008311801561423a5750600082115b6142565760405162461bcd60e51b815260040161023790614eee565b6000614264856103e56143ba565b9050600061427282856143ba565b9050600061428c83614286886103e86143ba565b90614400565b905061429881836150ad565b979650505050505050565b600080826001600160a01b0316846001600160a01b031614156142d85760405162461bcd60e51b815260040161023790614dfd565b826001600160a01b0316846001600160a01b0316106142f85782846142fb565b83835b90925090506001600160a01b038216612d415760405162461bcd60e51b815260040161023790614fa8565b60008084116143475760405162461bcd60e51b815260040161023790614cd5565b6000831180156143575750600082115b6143735760405162461bcd60e51b815260040161023790614eee565b600061438b6103e861438586886143ba565b906143ba565b9050600061439f6103e5614385868961442e565b90506143b0600161428683856150ad565b9695505050505050565b60008115806143de575082826143d081836151e1565b92506143dc90836150ad565b145b6143fa5760405162461bcd60e51b815260040161023790614c67565b92915050565b60008261440d8382615095565b91508110156143fa5760405162461bcd60e51b815260040161023790614c9e565b60008261443b8382615200565b91508111156143fa5760405162461bcd60e51b815260040161023790614bc2565b805161020f816152a1565b600082601f830112614477578081fd5b8135602061448c61448783615071565b615047565b82815281810190858301838502870184018810156144a8578586fd5b855b858110156144cf5781356144bd816152a1565b845292840192908401906001016144aa565b5090979650505050505050565b60008083601f8401126144ed578182fd5b50813567ffffffffffffffff811115614504578182fd5b6020830191508360208083028501011115612d4157600080fd5b60008083601f84011261452f578182fd5b50813567ffffffffffffffff811115614546578182fd5b602083019150836020828501011115612d4157600080fd5b80516dffffffffffffffffffffffffffff8116811461020f57600080fd5b60006020828403121561458d578081fd5b8151612ddb816152a1565b60008060008060008060008060a0898b0312156145b3578384fd5b88356145be816152a1565b975060208901356145ce816152a1565b9650604089013567ffffffffffffffff808211156145ea578586fd5b6145f68c838d016144dc565b909850965060608b013591508082111561460e578586fd5b61461a8c838d016144dc565b909650945060808b0135915080821115614632578384fd5b5061463f8b828c0161451e565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561466b578182fd5b8635614676816152a1565b95506020870135614686816152a1565b94506040870135935060608701359250608087013567ffffffffffffffff8111156146af578283fd5b6146bb89828a0161451e565b979a9699509497509295939492505050565b6000602082840312156146de578081fd5b81518015158114612ddb578182fd5b6000602082840312156146fe578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612ddb578182fd5b600080600060608486031215614741578081fd5b61474a8461455e565b92506147586020850161455e565b9150604084015163ffffffff81168114614770578182fd5b809150509250925092565b60006020828403121561478c578081fd5b5051919050565b600080604083850312156147a5578182fd5b8235915060208301356147b7816152a1565b809150509250929050565b600080604083850312156147d4578182fd5b8251915060208301516147b7816152a1565b600080600080608085870312156147fb578182fd5b8451935060208086015167ffffffffffffffff811115614819578384fd5b8601601f81018813614829578384fd5b805161483761448782615071565b81815283810190838501858402850186018c1015614853578788fd5b8794505b8385101561487e57805161486a816152a1565b835260019490940193918501918501614857565b5080975050505050506148936040860161445c565b6060959095015193969295505050565b600080600080608085870312156148b8578182fd5b84359350602085013567ffffffffffffffff8111156148d5578283fd5b6148e187828801614467565b93505060408501356148f2816152a1565b9396929550929360600135925050565b60008060408385031215614914578182fd5b8235915060208084013567ffffffffffffffff80821115614933578384fd5b818601915086601f830112614946578384fd5b8135818111156149585761495861528b565b61496a84601f19601f84011601615047565b9150808252878482850101111561497f578485fd5b8084840185840137810190920192909252919491935090915050565b600080600080600060a086880312156149b2578283fd5b8535945060208601359350604086013567ffffffffffffffff8111156149d6578384fd5b6149e288828901614467565b93505060608601356149f3816152a1565b949793965091946080013592915050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251614a50818460208701615217565b9190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015614b7e57835183529284019291840191600101614b62565b50909695505050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526016908201527f4558434553534956455f494e5055545f414d4f554e5400000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252602a908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4f555460408201527f5055545f414d4f554e5400000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a20494e56414c49445f5041544800000000604082015260600190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f4d6174657269613a204578706972656400000000000000000000000000000000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f494e53554646494349454e545f4f55545055545f414d4f554e54000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b60008582528460208301526001600160a01b03841660408301526080606083015282518060808401526150308160a0850160208701615217565b601f01601f19169190910160a00195945050505050565b60405181810167ffffffffffffffff811182821017156150695761506961528b565b604052919050565b600067ffffffffffffffff82111561508b5761508b61528b565b5060209081020190565b600082198211156150a8576150a8615275565b500190565b6000826150c857634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116150df575061510a565b8187048211156150f1576150f1615275565b808616156150fe57918102915b9490941c9380026150d0565b94509492505050565b6000612ddb600019848460008261512c57506001612ddb565b8161513957506000612ddb565b816001811461514f576002811461515957615186565b6001915050612ddb565b60ff84111561516a5761516a615275565b6001841b91508482111561518057615180615275565b50612ddb565b5060208310610133831016604e8410600b84101617156151b9575081810a838111156151b4576151b4615275565b612ddb565b6151c684848460016150cd565b8086048211156151d8576151d8615275565b02949350505050565b60008160001904831182151516156151fb576151fb615275565b500290565b60008282101561521257615212615275565b500390565b60005b8381101561523257818101518382015260200161521a565b83811115612c255750506000910152565b60008161525257615252615275565b506000190190565b600060001982141561526e5761526e615275565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146152b657600080fd5b5056fea26469706673582212202c7380dd619a0d52a6c7a8b8c79a1218838902a4c693ddafa9e09a21d681b5ee64736f6c63430008000033",
      "srcmap": "437:16944:4:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "437:16944:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17265:114;;;;;;;;;;-1:-1:-1;17265:114:4;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7751:1106;;;;;;;;;;-1:-1:-1;7751:1106:4;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1232:1712::-;;;;;;;;;;-1:-1:-1;1232:1712:4;;;;;:::i;:::-;;:::i;6419:1322::-;;;;;;;;;;-1:-1:-1;6419:1322:4;;;;;:::i;:::-;;:::i;4842:1568::-;;;;;;:::i;:::-;;:::i;2950:1881::-;;;;;;;;;;-1:-1:-1;2950:1881:4;;;;;:::i;:::-;;:::i;17041:214::-;;;;;;;;;;-1:-1:-1;17041:214:4;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15935:1100::-;;;;;;;;;;-1:-1:-1;15935:1100:4;;;;;:::i;:::-;;:::i;1992:184:2:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8867:1668:4:-;;;;;;:::i;:::-;;:::i;17265:114::-;17344:4;17265:114;;;;:::o;7751:1106::-;7945:21;7926:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;;;;;;;;;7978:15:4::1;8033:4;-1:-1:-1::0;;;;;8004:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7978:72;;8060:20;8120:4;-1:-1:-1::0;;;;;8091:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8060:82;;8152:10;8199:4;-1:-1:-1::0;;;;;8170:54:4::1;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8152:75;;8238:77;8270:4;8275:1;8270:7;;;;;;-1:-1:-1::0;;;8270:7:4::1;;;;;;;;;;;;;;;8279:10;8299:4;8306:8;8238:31;:77::i;:::-;8356:43;8367:4;8372:1;8367:7;;;;;;-1:-1:-1::0;;;8367:7:4::1;;;;;;;;;;;;;;;8376:8;8386:12;8356:10;:43::i;:::-;8335:4;8340:1;8335:7;;;;;;-1:-1:-1::0;;;8335:7:4::1;;;;;;;;;;;;;;8334:65;;;;-1:-1:-1::0;;;;;8334:65:4::1;-1:-1:-1::0;;;;;8334:65:4::1;;;::::0;::::1;;8428:53;8457:7;8466:8;8476:4;8428:28;:53::i;:::-;8418:63;;8530:12;8499:7;8524:1;8507:7;:14;:18;;;;:::i;:::-;8499:27;;;;;;-1:-1:-1::0;;;8499:27:4::1;;;;;;;;;;;;;;;:43;;8491:82;;;;-1:-1:-1::0;;;8491:82:4::1;;;;;;;:::i;:::-;8592:121;8633:4;8638:1;8633:7;;;;;;-1:-1:-1::0;;;8633:7:4::1;;;;;;;;;;;;;;;8642:49;8665:7;8674:4;8679:1;8674:7;;;;;;-1:-1:-1::0;;;8674:7:4::1;;;;;;;;;;;;;;;8683:4;8688:1;8683:7;;;;;;-1:-1:-1::0;;;8683:7:4::1;;;;;;;;;;;;;;;8642:22;:49::i;:::-;8693:7;8701:1;8693:10;;;;;;-1:-1:-1::0;;;8693:10:4::1;;;;;;;;;;;;;;;8592:27;:121::i;:::-;8732:44;8738:7;8747;8756:4;8770;8732:5;:44::i;:::-;8786:64;8797:5;8804:7;8829:1;8812:7;:14;:18;;;;:::i;:::-;8804:27;;;;;;-1:-1:-1::0;;;8804:27:4::1;;;;;;;;;;;;;;;8833:12;8847:2;8786:10;:64::i;:::-;500:1:2;;;7751:1106:4::0;;;;;;;;:::o;1232:1712::-;1429:21;1410:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;1471:15:4::1;1526:4;-1:-1:-1::0;;;;;1497:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1471:72;;1553:19;1612:4;-1:-1:-1::0;;;;;1583:47:4::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1553:80;;1643:20;1703:4;-1:-1:-1::0;;;;;1674:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1643:82;;1736:77;1768:4;1773:1;1768:7;;;;;;-1:-1:-1::0;;;1768:7:4::1;;;;;;;;1736:77;1854:43;1865:4;1870:1;1865:7;;;;;;-1:-1:-1::0;;;1865:7:4::1;;;;;;;;;;;;;;;1874:8;1884:12;1854:10;:43::i;:::-;1833:4;1838:1;1833:7;;;;;;-1:-1:-1::0;;;1833:7:4::1;;;;;;;;;;;;;;1832:65;;;;-1:-1:-1::0;;;;;1832:65:4::1;-1:-1:-1::0;;;;;1832:65:4::1;;;::::0;::::1;;1916:15;1941:11:::0;1962:16:::1;2020:47;2031:4;2050:1;2036:4;:11;:15;;;;:::i;:::-;2031:21;;;;;;-1:-1:-1::0;;;2031:21:4::1;;;;;;;;;;;;;;;2054:12;2020:10;:47::i;:::-;1997:70:::0;;-1:-1:-1;1997:70:4;-1:-1:-1;2090:11:4;::::1;:51:::0;::::1;;;;2120:4;2139:1;2125:4;:11;:15;;;;:::i;:::-;2120:21;;;;;;-1:-1:-1::0;;;2120:21:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;2105:36:4::1;:11;-1:-1:-1::0;;;;;2105:36:4::1;;;2090:51;2086:280;;;2168:4;2187:1;2173:4;:11;:15;;;;:::i;:::-;2168:21;;;;;;-1:-1:-1::0;;;2168:21:4::1;;;;;;;;;;;;;;;2157:32;;2218:37;2232:8;2242:12;2218:13;:37::i;:::-;2301:53;::::0;;;;2203:52;;-1:-1:-1;;;;;;2301:45:4;::::1;::::0;::::1;::::0;:53:::1;::::0;2347:6;;2301:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2269:4;2288:1;2274:4;:11;:15;;;;:::i;:::-;2269:21;;;;;;-1:-1:-1::0;;;2269:21:4::1;;;;;;;;;;;;;;:86;-1:-1:-1::0;;;;;2269:86:4::1;;;-1:-1:-1::0;;;;;2269:86:4::1;;;::::0;::::1;2086:280;2394:53;2423:7;2432:8;2442:4;2394:28;:53::i;:::-;2384:63;;2496:12;2465:7;2490:1;2473:7;:14;:18;;;;:::i;:::-;2465:27;;;;;;-1:-1:-1::0;;;2465:27:4::1;;;;;;;;;;;;;;;:43;;2457:82;;;;-1:-1:-1::0;;;2457:82:4::1;;;;;;;:::i;:::-;2558:121;2599:4;2604:1;2599:7;;;;;;-1:-1:-1::0;;;2599:7:4::1;;;;;;;;;;;;;;;2608:49;2631:7;2640:4;2645:1;2640:7;;;;;;-1:-1:-1::0;;;2640:7:4::1;;;;;;;;;;;;;;;2649:4;2654:1;2649:7;;;;;;-1:-1:-1::0;;;2649:7:4::1;;;;;;;;2608:49;2659:7;2667:1;2659:10;;;;;;-1:-1:-1::0;;;2659:10:4::1;;;;;;;;2558:121;2702:10;2698:240;;;2728:33;2734:7;2743;2752:4;2758:2;2728:5;:33::i;:::-;2698:240;;;2792:44;2798:7;2807;2816:4;2830;2792:5;:44::i;:::-;2850:77;2863:6;2871:8;2881:7;2906:1;2889:7;:14;:18;;;;:::i;:::-;2881:27;;;;;;-1:-1:-1::0;;;2881:27:4::1;;;;;;;;;;;;;;;2910:12;2924:2;2850:12;:77::i;:::-;500:1:2;;;;;;1232:1712:4::0;;;;;;;;:::o;6419:1322::-;6613:21;6594:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;6646:15:4::1;6701:4;-1:-1:-1::0;;;;;6672:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6646:72;;6728:20;6788:4;-1:-1:-1::0;;;;;6759:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6728:82;;6820:10;6867:4;-1:-1:-1::0;;;;;6838:54:4::1;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6820:75;;6914:13;6930:4;6935:1;6930:7;;;;;;-1:-1:-1::0;;;6930:7:4::1;;;;;;;;;;;;;;;6914:23;;6981:12;-1:-1:-1::0;;;;;6965:45:4::1;;7027:12;-1:-1:-1::0;;;;;7011:36:4::1;;7048:4;7053:1;7048:7;;;;;;-1:-1:-1::0;;;7048:7:4::1;;;;;;;;;;;;;;;7011:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6965:92;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6947:4;6952:1;6947:7;;;;;;-1:-1:-1::0;;;6947:7:4::1;;;;;;;;;;;;;;:111;-1:-1:-1::0;;;;;6947:111:4::1;;;-1:-1:-1::0;;;;;6947:111:4::1;;;::::0;::::1;7079:53;7107:7;7116:9;7127:4;7079:27;:53::i;:::-;7069:63;;7190:4;7195:1;7190:7;;;;;;-1:-1:-1::0;;;7190:7:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;7179:28:4::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7174:35;::::0;:2:::1;:35;:::i;:::-;7169:41;::::0;:2:::1;:41;:::i;:::-;7155:7;7163:1;7155:10;;;;;;-1:-1:-1::0;;;7155:10:4::1;;;;;;;;;;;;;;;:56;;;;:::i;:::-;:60;::::0;7214:1:::1;7155:60;:::i;:::-;7142:7;7150:1;7142:10;;;;;;-1:-1:-1::0;;;7142:10:4::1;;;;;;;;;;;;;;:73;;;::::0;::::1;7252:11;7238:7;7246:1;7238:10;;;;;;-1:-1:-1::0;;;7238:10:4::1;;;;;;;;;;;;;;;:25;;7230:60;;;;-1:-1:-1::0;;;7230:60:4::1;;;;;;;:::i;:::-;7301:77;7333:5;7340:10;7360:4;7367:7;7375:1;7367:10;;;;;;-1:-1:-1::0;;;7367:10:4::1;;;;;;;;;;;;;;;7301:31;:77::i;:::-;7414:43;7425:5;7432:7;7440:1;7432:10;;;;;;-1:-1:-1::0;;;7432:10:4::1;;;;;;;;;;;;;;;7444:12;7414:10;:43::i;:::-;7397:60;;7400:7;7408:1;7400:10;;;;;;-1:-1:-1::0;;;7400:10:4::1;;;;;;;;;;;;;;7397:60;;;::::0;::::1;7476:121;7517:4;7522:1;7517:7;;;;;;-1:-1:-1::0;;;7517:7:4::1;;;;;;;;;;;;;;;7526:49;7549:7;7558:4;7563:1;7558:7;;;;;;-1:-1:-1::0;;;7558:7:4::1;;;;;;;;;;;;;;;7567:4;7572:1;7567:7;;;;;;-1:-1:-1::0;;;7567:7:4::1;;;;;;;;7526:49;7577:7;7585:1;7577:10;;;;;;-1:-1:-1::0;;;7577:10:4::1;;;;;;;;7476:121;7616:44;7622:7;7631;7640:4;7654;7616:5;:44::i;:::-;7670:64;7681:5;7688:7;7713:1;7696:7;:14;:18;;;;:::i;:::-;7688:27;;;;;;-1:-1:-1::0;;;7688:27:4::1;;;;;;;;;;;;;;;7717:12;7731:2;7670:10;:64::i;:::-;500:1:2;;;;6419:1322:4::0;;;;;;;;:::o;4842:1568::-;5021:21;4994:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;5054:15:4::1;5109:4;-1:-1:-1::0;;;;;5080:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5054:72;;5136:19;5195:4;-1:-1:-1::0;;;;;5166:47:4::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5136:80;;5226:20;5286:4;-1:-1:-1::0;;;;;5257:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5226:82;;5329:33;5338:9;5349:12;5329:8;:33::i;:::-;5319:4;5324:1;5319:7;;;;;;-1:-1:-1::0;;;5319:7:4::1;;;;;;;;;;;;;;:43;-1:-1:-1::0;;;;;5319:43:4::1;;;-1:-1:-1::0;;;;;5319:43:4::1;;;::::0;::::1;5381:15;5406:11:::0;5427:16:::1;5485:47;5496:4;5515:1;5501:4;:11;:15;;;;:::i;5485:47::-;5462:70:::0;;-1:-1:-1;5462:70:4;-1:-1:-1;5555:11:4;::::1;:51:::0;::::1;;;;5585:4;5604:1;5590:4;:11;:15;;;;:::i;:::-;5585:21;;;;;;-1:-1:-1::0;;;5585:21:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5570:36:4::1;:11;-1:-1:-1::0;;;;;5570:36:4::1;;;5555:51;5551:280;;;5633:4;5652:1;5638:4;:11;:15;;;;:::i;:::-;5633:21;;;;;;-1:-1:-1::0;;;5633:21:4::1;;;;;;;;;;;;;;;5622:32;;5683:37;5697:8;5707:12;5683:13;:37::i;:::-;5766:53;::::0;;;;5668:52;;-1:-1:-1;;;;;;5766:45:4;::::1;::::0;::::1;::::0;:53:::1;::::0;5812:6;;5766:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5734:4;5753:1;5739:4;:11;:15;;;;:::i;:::-;5734:21;;;;;;-1:-1:-1::0;;;5734:21:4::1;;;;;;;;;;;;;;:86;-1:-1:-1::0;;;;;5734:86:4::1;;;-1:-1:-1::0;;;;;5734:86:4::1;;;::::0;::::1;5551:280;5859:54;5888:7;5897:9;5908:4;5859:28;:54::i;:::-;5849:64;;5962:12;5931:7;5956:1;5939:7;:14;:18;;;;:::i;:::-;5931:27;;;;;;-1:-1:-1::0;;;5931:27:4::1;;;;;;;;;;;;;;;:43;;5923:82;;;;-1:-1:-1::0;;;5923:82:4::1;;;;;;;:::i;:::-;6024:121;6065:4;6070:1;6065:7;;;;;;-1:-1:-1::0;;;6065:7:4::1;;;;;;;;6024:121;6168:10;6164:240;;;6194:33;6200:7;6209;6218:4;6224:2;6194:5;:33::i;:::-;6164:240;;;6258:44;6264:7;6273;6282:4;6296;6258:5;:44::i;:::-;6316:77;6329:6;6337:8;6347:7;6372:1;6355:7;:14;:18;;;;:::i;6316:77::-;500:1:2;;;;;;4842:1568:4::0;;;;;;;:::o;2950:1881::-;3147:21;3128:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;3189:15:4::1;3244:4;-1:-1:-1::0;;;;;3215:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3189:72;;3271:20;3331:4;-1:-1:-1::0;;;;;3302:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3271:82;;3372:15;3390:4;3395:1;3390:7;;;;;;-1:-1:-1::0;;;3390:7:4::1;;;;;;;;;;;;;;;3372:25;;3441:12;-1:-1:-1::0;;;;;3425:45:4::1;;3487:12;-1:-1:-1::0;;;;;3471:36:4::1;;3508:4;3513:1;3508:7;;;;;;-1:-1:-1::0;;;3508:7:4::1;;;;;;;;;;;;;;;3471:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3425:92;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3407:4;3412:1;3407:7;;;;;;-1:-1:-1::0;;;3407:7:4::1;;;;;;;;;;;;;;:111;-1:-1:-1::0;;;;;3407:111:4::1;;;-1:-1:-1::0;;;;;3407:111:4::1;;;::::0;::::1;3537:15;3562:11:::0;3606:47:::1;3617:4;3636:1;3622:4;:11;:15;;;;:::i;3606:47::-;3583:70:::0;;-1:-1:-1;3583:70:4;-1:-1:-1;3663:16:4::1;3702:11:::0;::::1;:98:::0;::::1;;;;3779:4;3798:1;3784:4;:11;:15;;;;:::i;:::-;3779:21;;;;;;-1:-1:-1::0;;;3779:21:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;3717:83:4::1;3754:4;-1:-1:-1::0;;;;;3725:47:4::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3717:83:4::1;;;3702:98;3698:322;;;3827:4;3846:1;3832:4;:11;:15;;;;:::i;:::-;3827:21;;;;;;-1:-1:-1::0;;;3827:21:4::1;;;;;;;;;;;;;;;3816:32;;3875:34;3889:8;3899:9;3875:13;:34::i;:::-;3955:53;::::0;;;;3862:47;;-1:-1:-1;;;;;;3955:45:4;::::1;::::0;::::1;::::0;:53:::1;::::0;4001:6;;3955:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3923:4;3942:1;3928:4;:11;:15;;;;:::i;:::-;3923:21;;;;;;-1:-1:-1::0;;;3923:21:4::1;;;;;;;;;;;;;;:86;-1:-1:-1::0;;;;;3923:86:4::1;;;-1:-1:-1::0;;;;;3923:86:4::1;;;::::0;::::1;3698:322;4040:53;4068:7;4077:9;4088:4;4040:27;:53::i;:::-;4030:63;;4151:7;-1:-1:-1::0;;;;;4140:28:4::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4135:35;::::0;:2:::1;:35;:::i;:::-;4130:41;::::0;:2:::1;:41;:::i;:::-;4116:7;4124:1;4116:10;;;;;;-1:-1:-1::0;;;4116:10:4::1;;;;;;;;;;;;;;;:56;;;;:::i;:::-;:60;::::0;4175:1:::1;4116:60;:::i;:::-;4103:7;4111:1;4103:10;;;;;;-1:-1:-1::0;;;4103:10:4::1;;;;;;;;;;;;;;:73;;;::::0;::::1;4209:11;4195:7;4203:1;4195:10;;;;;;-1:-1:-1::0;;;4195:10:4::1;;;;;;;;;;;;;;;:25;;4187:60;;;;-1:-1:-1::0;;;4187:60:4::1;;;;;;;:::i;:::-;4266:79;4298:7;4307:10;4327:4;4334:7;4342:1;4334:10;;;;;;-1:-1:-1::0;;;4334:10:4::1;;;;;;;;4266:79;4381:45;4392:7;4401;4409:1;4401:10;;;;;;-1:-1:-1::0;;;4401:10:4::1;;;;;;;;;;;;;;;4413:12;4381:10;:45::i;:::-;4364:62;;4367:7;4375:1;4367:10;;;;;;-1:-1:-1::0;;;4367:10:4::1;;;;;;;;;;;;;;4364:62;;;::::0;::::1;4445:121;4486:4;4491:1;4486:7;;;;;;-1:-1:-1::0;;;4486:7:4::1;;;;;;;;4445:121;4589:10;4585:240;;;4615:33;4621:7;4630;4639:4;4645:2;4615:5;:33::i;4585:240::-;4679:44;4685:7;4694;4703:4;4717;4679:5;:44::i;:::-;4737:77;4750:6;4758:8;4768:7;4793:1;4776:7;:14;:18;;;;:::i;:::-;4768:27;;;;;;-1:-1:-1::0;;;4768:27:4::1;;;;;;;;;;;;;;;4797:12;4811:2;4737:12;:77::i;17041:214::-:0;17222:6;17240:8;;;15935:1100;16094:6;;;16157:21;16094:6;;16157:21;16339:31;;;;16350:4;16339:31;:::i;:::-;16415:53;;16316:54;;-1:-1:-1;16316:54:4;-1:-1:-1;16415:53:4;;;;;;;;;;;;:::i;:::-;16384:84;;-1:-1:-1;16384:84:4;;-1:-1:-1;16384:84:4;-1:-1:-1;16384:84:4;-1:-1:-1;16505:31:4;;-1:-1:-1;16525:10:4;16505:19;:31::i;:::-;:36;:61;;16561:5;16505:61;;;16544:14;:5;16552:6;16544:14;:::i;:::-;16497:69;;16589:9;16602:1;16589:14;16585:386;;;16605:58;16629:5;16636:6;16644:4;16650:2;16654:8;16605:23;:58::i;:::-;16585:386;;;16682:9;16695:1;16682:14;16678:293;;;16698:64;16722:6;16730:5;16737:4;16743:2;16747:4;16753:8;16698:23;:64::i;16678:293::-;16781:9;16794:1;16781:14;16777:194;;;16797:55;16818:5;16825:6;16833:4;16839:2;16843:8;16797:20;:55::i;16777:194::-;16871:9;16884:1;16871:14;16867:104;;;16887:61;16908:6;16916:5;16923:4;16929:2;16933:4;16939:8;16887:20;:61::i;16867:104::-;-1:-1:-1;16997:31:4;;15935:1100;-1:-1:-1;;;;;;;;;;;15935:1100:4:o;1992:184:2:-;2067:21;2136:7;-1:-1:-1;;;;;2120:32:2;;2160:6;2120:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2100:69;1992:184;-1:-1:-1;;;;1992:184:2:o;8867:1668:4:-;9043:21;9024:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;9076:15:4::1;9131:4;-1:-1:-1::0;;;;;9102:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9076:72;;9158:20;9218:4;-1:-1:-1::0;;;;;9189:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9158:82;;9250:19;9309:4;-1:-1:-1::0;;;;;9280:47:4::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9250:80;;9349:15;9374:11:::0;9395:16:::1;9453:47;9464:4;9483:1;9469:4;:11;:15;;;;:::i;:::-;9464:21;;;;;;-1:-1:-1::0;;;9464:21:4::1;;;;;;;;;;;;;;;9487:12;9453:10;:47::i;:::-;9430:70:::0;;-1:-1:-1;9430:70:4;-1:-1:-1;9523:11:4;::::1;:51:::0;::::1;;;;9553:4;9572:1;9558:4;:11;:15;;;;:::i;:::-;9553:21;;;;;;-1:-1:-1::0;;;9553:21:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;9538:36:4::1;:11;-1:-1:-1::0;;;;;9538:36:4::1;;;9523:51;9519:274;;;9601:4;9620:1;9606:4;:11;:15;;;;:::i;:::-;9601:21;;;;;;-1:-1:-1::0;;;9601:21:4::1;;;;;;;;;;;;;;;9590:32;;9648:34;9662:8;9672:9;9648:13;:34::i;:::-;9728:53;::::0;;;;9636:46;;-1:-1:-1;;;;;;9728:45:4;::::1;::::0;::::1;::::0;:53:::1;::::0;9774:6;;9728:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9696:4;9715:1;9701:4;:11;:15;;;;:::i;:::-;9696:21;;;;;;-1:-1:-1::0;;;9696:21:4::1;;;;;;;;;;;;;;:86;-1:-1:-1::0;;;;;9696:86:4::1;;;-1:-1:-1::0;;;;;9696:86:4::1;;;::::0;::::1;9519:274;9821:53;9849:7;9858:9;9869:4;9821:27;:53::i;:::-;9811:63;;9906:9;9892:7;9900:1;9892:10;;;;;;-1:-1:-1::0;;;9892:10:4::1;;;;;;;;;;;;;;;:23;;9884:58;;;;-1:-1:-1::0;;;9884:58:4::1;;;;;;;:::i;:::-;9971:34;9980:7;9988:1;9980:10;;;;;;-1:-1:-1::0;;;9980:10:4::1;;;;;;;;;;;;;;;9992:12;9971:8;:34::i;:::-;9961:4;9966:1;9961:7;;;;;;-1:-1:-1::0;;;9961:7:4::1;;;;;;;;;;;;;;:44;-1:-1:-1::0;;;;;9961:44:4::1;;;-1:-1:-1::0;;;;;9961:44:4::1;;;::::0;::::1;10024:121;10065:4;10070:1;10065:7;;;;;;-1:-1:-1::0;;;10065:7:4::1;;;;;;;;10024:121;10168:10;10164:240;;;10194:33;10200:7;10209;10218:4;10224:2;10194:5;:33::i;:::-;10164:240;;;10258:44;10264:7;10273;10282:4;10296;10258:5;:44::i;:::-;10316:77;10329:6;10337:8;10347:7;10372:1;10355:7;:14;:18;;;;:::i;10316:77::-;10438:7;10446:1;10438:10;;;;;;-1:-1:-1::0;;;10438:10:4::1;;;;;;;;;;;;;;;10426:9;:22;10422:106;;;10462:66;10493:10;10517:7;10525:1;10517:10;;;;;;-1:-1:-1::0;;;10517:10:4::1;;;;;;;;;;;;;;;10505:9;:22;;;;:::i;:::-;10462:30;:66::i;1001:439:36:-:0;1219:12;1233:17;1254:5;-1:-1:-1;;;;;1254:10:36;1288;1300:4;1306:2;1310:5;1265:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1254:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:99;;;;1335:7;:57;;;;-1:-1:-1;1347:11:36;;:16;;:44;;;1378:4;1367:24;;;;;;;;;;;;:::i;:::-;1327:106;;;;-1:-1:-1;;;1327:106:36;;;;;;;:::i;:::-;1001:439;;;;;;:::o;907:529:2:-;1023:21;1046:17;1129:6;1086:5;-1:-1:-1;;;;;1079:23:2;;1111:4;1118:7;1079:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;1075:136;;;1151:49;;;;;-1:-1:-1;;;;;1151:21:2;;;;;:49;;1173:7;;-1:-1:-1;;1182:17:2;1151:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1075:136;1238:44;;;;;1222:10;;-1:-1:-1;;;;;1238:29:2;;;;;:44;;1268:5;;1275:6;;1238:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1336:44:2;;;;;1221:61;;-1:-1:-1;;;;;;1336:40:2;;;;;:44;;1221:61;;1336:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1305:124;;;;;1312:69;;-1:-1:-1;;;;;;1305:87:2;;;;;:124;;1414:4;;1305:124;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1293:136;;907:529;;;;;;;:::o;3804:549:32:-;3938:24;3997:1;3982:4;:11;:16;;3974:57;;;;-1:-1:-1;;;3974:57:32;;;;;;;:::i;:::-;4065:4;:11;4051:26;;;;;;-1:-1:-1;;;4051:26:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4051:26:32;;4041:36;;4100:8;4087:7;4095:1;4087:10;;;;;;-1:-1:-1;;;4087:10:32;;;;;;;;;;;;;;:21;;;;;4123:9;4118:229;4152:1;4138:4;:11;:15;;;;:::i;:::-;4134:1;:19;4118:229;;;4175:17;4194:18;4216:42;4228:7;4237:4;4242:1;4237:7;;;;;;-1:-1:-1;;;4237:7:32;;;;;;;;;;;;;;;4246:4;4251:1;4255;4251:5;;;;:::i;:::-;4246:11;;;;;;-1:-1:-1;;;4246:11:32;;;;;;;;;;;;;;;4216;:42::i;:::-;4174:84;;;;4289:47;4302:7;4310:1;4302:10;;;;;;-1:-1:-1;;;4302:10:32;;;;;;;;;;;;;;;4314:9;4325:10;4289:12;:47::i;:::-;4272:7;4280:5;:1;4284;4280:5;:::i;:::-;4272:14;;;;;;-1:-1:-1;;;4272:14:32;;;;;;;;;;;;;;:64;;;;;4118:229;;4155:3;;;;;:::i;:::-;;;;4118:229;;;;3804:549;;;;;:::o;764:708::-;883:12;908:14;924;942:26;953:6;961;942:10;:26::i;:::-;907:61;;;;1178:7;1242:6;1250;1225:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1215:43;;;;;;1095:306;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1095:306:32;;;;;;;;;1060:363;;1095:306;1060:363;;;;;764:708;-1:-1:-1;;;;;;764:708:32:o;605:390:36:-;785:12;799:17;820:5;-1:-1:-1;;;;;820:10:36;854;866:2;870:5;831:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:93;;;;895:7;:57;;;;-1:-1:-1;907:11:36;;:16;;:44;;;938:4;927:24;;;;;;;;;;;;:::i;:::-;887:101;;;;-1:-1:-1;;;887:101:36;;;;;;;:::i;:::-;605:390;;;;;:::o;487:733:4:-;610:6;605:609;636:1;622:4;:11;:15;;;;:::i;:::-;618:1;:19;605:609;;;659:13;674:14;693:4;698:1;693:7;;;;;;-1:-1:-1;;;693:7:4;;;;;;;;;;;;;;;702:4;707:1;711;707:5;;;;:::i;:::-;702:11;;;;;;-1:-1:-1;;;702:11:4;;;;;;;;;;;;;;;658:56;;;;729:14;748:40;774:5;781:6;748:25;:40::i;:::-;-1:-1:-1;728:60:4;-1:-1:-1;802:14:4;819:7;827:5;:1;831;827:5;:::i;:::-;819:14;;;;;;-1:-1:-1;;;819:14:4;;;;;;;;;;;;;;;802:31;;848:15;865;893:6;-1:-1:-1;;;;;884:15:4;:5;-1:-1:-1;;;;;884:15:4;;:61;;926:9;942:1;884:61;;;908:1;912:9;884:61;847:98;;;;959:10;990:1;976:4;:11;:15;;;;:::i;:::-;972:1;:19;:80;;1049:3;972:80;;;994:52;1017:7;1026:6;1034:4;1039:5;:1;1043;1039:5;:::i;:::-;1034:11;;;;;;-1:-1:-1;;;1034:11:4;;;;;;;;994:52;959:93;;1079:46;1102:7;1111:5;1118:6;1079:22;:46::i;:::-;-1:-1:-1;;;;;1066:65:4;;1149:10;1161;1173:2;1187:1;1177:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1177:12:4;;1066:137;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;605:609;;;;;;;639:3;;;;;:::i;:::-;;;;605:609;;1752:234:2;1886:41;;;;;-1:-1:-1;;;;;1886:29:2;;;;;:41;;1916:2;;1920:6;;1886:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1937:42;1968:2;1972:6;1937:30;:42::i;:::-;1752:234;;;;:::o;583:318::-;658:12;672:10;729:5;-1:-1:-1;;;;;698:51:2;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;698:53:2;;;;;;;;-1:-1:-1;;698:53:2;;;;;;;;;;;;:::i;:::-;;;694:201;;846:38;;;;;822:5;;-1:-1:-1;;;;;;846:31:2;;;;;:38;;878:5;;846:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;841:43;;694:201;;;;776:4;766:14;;694:201;583:318;;;;;:::o;2182:175::-;2259:17;2331:5;-1:-1:-1;;;;;2320:26:2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2315:33;;:2;:33;:::i;:::-;2310:39;;:2;:39;:::i;:::-;2300:50;;:6;:50;:::i;:::-;2288:62;2182:175;-1:-1:-1;;;2182:175:2:o;1442:304::-;1604:41;;;;;-1:-1:-1;;;;;1604:29:2;;;;;:41;;1634:2;;1638:6;;1604:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1655:84;1683:8;1693:2;1704:8;-1:-1:-1;;;;;1697:26:2;;1732:4;1697:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1655:27;:84::i;4431:570:32:-;4565:24;4624:1;4609:4;:11;:16;;4601:57;;;;-1:-1:-1;;;4601:57:32;;;;;;;:::i;:::-;4692:4;:11;4678:26;;;;;;-1:-1:-1;;;4678:26:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4678:26:32;;4668:36;;4744:9;4714:7;4739:1;4722:7;:14;:18;;;;:::i;:::-;4714:27;;;;;;-1:-1:-1;;;4714:27:32;;;;;;;;;;;;;;:39;;;;;4768:9;4794:1;4780:4;:11;:15;;;;:::i;:::-;4768:27;;4763:232;4797:5;;4763:232;;4824:17;;4865:42;4877:7;4886:4;4891:5;4895:1;4891;:5;:::i;:::-;4886:11;;;;;;-1:-1:-1;;;4886:11:32;;;;;;;;;;;;;;;4899:4;4904:1;4899:7;;;;;;-1:-1:-1;;;4899:7:32;;;;;;;;4865:42;4823:84;;;;4938:46;4950:7;4958:1;4950:10;;;;;;-1:-1:-1;;;4950:10:32;;;;;;;;;;;;;;;4962:9;4973:10;4938:11;:46::i;:::-;4921:7;4929:5;4933:1;4929;:5;:::i;:::-;4921:14;;;;;;-1:-1:-1;;;4921:14:32;;;;;;;;;;;;;;:63;;;;;4763:232;;4804:3;;;;;:::i;:::-;;;;4763:232;;2909:290:2;3005:7;3042:10;-1:-1:-1;;;;;3032:30:2;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:32:2;;;;;;;;-1:-1:-1;;3032:32:2;;;;;;;;;;;;:::i;:::-;;;3028:165;;-1:-1:-1;3180:2:2;3173:9;;3028:165;3113:8;3125:1;3113:13;:28;;3133:8;3113:28;;;3129:1;3113:28;3106:35;;;;;10545:1462:4;10723:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;10743:15:4::1;10798:4;-1:-1:-1::0;;;;;10769:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10743:72;;10825:20;10885:4;-1:-1:-1::0;;;;;10856:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10825:82;;10918:15;10943:11:::0;10964:16:::1;11022:47;11033:4;11052:1;11038:4;:11;:15;;;;:::i;11022:47::-;10999:70:::0;;-1:-1:-1;10999:70:4;-1:-1:-1;11092:11:4;::::1;:98:::0;::::1;;;;11169:4;11188:1;11174:4;:11;:15;;;;:::i;:::-;11169:21;;;;;;-1:-1:-1::0;;;11169:21:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11107:83:4::1;11144:4;-1:-1:-1::0;;;;;11115:47:4::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11107:83:4::1;;;11092:98;11088:327;;;11217:4;11236:1;11222:4;:11;:15;;;;:::i;:::-;11217:21;;;;;;-1:-1:-1::0;;;11217:21:4::1;;;;;;;;;;;;;;;11206:32;;11267:37;11281:8;11291:12;11267:13;:37::i;:::-;11350:53;::::0;;;;11252:52;;-1:-1:-1;;;;;;11350:45:4;::::1;::::0;::::1;::::0;:53:::1;::::0;11396:6;;11350:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11318:4;11337:1;11323:4;:11;:15;;;;:::i;:::-;11318:21;;;;;;-1:-1:-1::0;;;11318:21:4::1;;;;;;;;;;;;;;:86;-1:-1:-1::0;;;;;11318:86:4::1;;;-1:-1:-1::0;;;;;11318:86:4::1;;;::::0;::::1;11088:327;11433:21;11457:53;11486:7;11495:8;11505:4;11457:28;:53::i;:::-;11433:77;;11559:12;11528:7;11553:1;11536:7;:14;:18;;;;:::i;:::-;11528:27;;;;;;-1:-1:-1::0;;;11528:27:4::1;;;;;;;;;;;;;;;:43;;11520:82;;;;-1:-1:-1::0;;;11520:82:4::1;;;;;;;:::i;:::-;11621:121;11662:4;11667:1;11662:7;;;;;;-1:-1:-1::0;;;11662:7:4::1;;;;;;;;;;;;;;;11671:49;11694:7;11703:4;11708:1;11703:7;;;;;;-1:-1:-1::0;;;11703:7:4::1;;;;;;;;;;;;;;;11712:4;11717:1;11712:7;;;;;;-1:-1:-1::0;;;11712:7:4::1;;;;;;;;11671:49;11722:7;11730:1;11722:10;;;;;;-1:-1:-1::0;;;11722:10:4::1;;;;;;;;11621:121;11765:10;11761:240;;;11791:33;11797:7;11806;11815:4;11821:2;11791:5;:33::i;:::-;11761:240;;;11855:44;11861:7;11870;11879:4;11893;11855:5;:44::i;:::-;11913:77;11926:6;11934:8;11944:7;11969:1;11952:7;:14;:18;;;;:::i;:::-;11944:27;;;;;;-1:-1:-1::0;;;11944:27:4::1;;;;;;;;;;;;;;;11973:12;11987:2;11913:12;:77::i;:::-;500:1:2;;;;;;10545:1462:4::0;;;;;;:::o;12017:1635::-;12217:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;12237:15:4::1;12292:4;-1:-1:-1::0;;;;;12263:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12237:72;;12319:20;12379:4;-1:-1:-1::0;;;;;12350:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12319:82;;12412:15;12437:11:::0;12458:16:::1;12516:47;12527:4;12546:1;12532:4;:11;:15;;;;:::i;12516:47::-;12493:70:::0;;-1:-1:-1;12493:70:4;-1:-1:-1;12586:11:4;::::1;:98:::0;::::1;;;;12663:4;12682:1;12668:4;:11;:15;;;;:::i;:::-;12663:21;;;;;;-1:-1:-1::0;;;12663:21:4::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;12601:83:4::1;12638:4;-1:-1:-1::0;;;;;12609:47:4::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12601:83:4::1;;;12586:98;12582:321;;;12711:4;12730:1;12716:4;:11;:15;;;;:::i;:::-;12711:21;;;;;;-1:-1:-1::0;;;12711:21:4::1;;;;;;;;;;;;;;;12700:32;;12758:34;12772:8;12782:9;12758:13;:34::i;:::-;12838:53;::::0;;;;12746:46;;-1:-1:-1;;;;;;12838:45:4;::::1;::::0;::::1;::::0;:53:::1;::::0;12884:6;;12838:53:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12806:4;12825:1;12811:4;:11;:15;;;;:::i;:::-;12806:21;;;;;;-1:-1:-1::0;;;12806:21:4::1;;;;;;;;;;;;;;:86;-1:-1:-1::0;;;;;12806:86:4::1;;;-1:-1:-1::0;;;;;12806:86:4::1;;;::::0;::::1;12582:321;12921:21;12945:53;12973:7;12982:9;12993:4;12945:27;:53::i;:::-;12921:77;;13030:11;13016:7;13024:1;13016:10;;;;;;-1:-1:-1::0;;;13016:10:4::1;;;;;;;;;;;;;;;:25;;13008:60;;;;-1:-1:-1::0;;;13008:60:4::1;;;;;;;:::i;:::-;13097:15;13168:1:::0;13154:7:::1;13162:1;13154:10;;;;;;-1:-1:-1::0;;;13154:10:4::1;;;;;;;;;;;;;;;13140:11;:24;;;;:::i;:::-;13127:37;;;13126:43;13122:115;;;13183:54;13211:4;13216:1;13211:7;;;;;;-1:-1:-1::0;;;13211:7:4::1;;;;;;;;;;;;;;;13220:4;13226:10;13183:27;:54::i;:::-;500:1:2;13266:121:4;13307:4;13312:1;13307:7;;;;;;-1:-1:-1::0;;;13307:7:4::1;;;;;;;;;;;;;;;13316:49;13339:7;13348:4;13353:1;13348:7;;;;;;-1:-1:-1::0;;;13348:7:4::1;;;;;;;;13266:121;13410:10;13406:240;;;13436:33;13442:7;13451;13460:4;13466:2;13436:5;:33::i;:::-;13406:240;;;13500:44;13506:7;13515;13524:4;13538;13500:5;:44::i;:::-;13558:77;13571:6;13579:8;13589:7;13614:1;13597:7;:14;:18;;;;:::i;13558:77::-;500:1:2;;;;;;12017:1635:4::0;;;;;;;:::o;13662:1039::-;13837:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;13857:15:4::1;13912:4;-1:-1:-1::0;;;;;13883:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13857:72;;13939:20;13999:4;-1:-1:-1::0;;;;;13970:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13939:82;;14031:10;14078:4;-1:-1:-1::0;;;;;14049:54:4::1;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14031:75;;14117:21;14141:53;14170:7;14179:8;14189:4;14141:28;:53::i;:::-;14117:77;;14243:12;14212:7;14237:1;14220:7;:14;:18;;;;:::i;:::-;14212:27;;;;;;-1:-1:-1::0;;;14212:27:4::1;;;;;;;;;;;;;;;:43;;14204:82;;;;-1:-1:-1::0;;;14204:82:4::1;;;;;;;:::i;:::-;14305:121;14346:4;14351:1;14346:7;;;;;;-1:-1:-1::0;;;14346:7:4::1;;;;;;;;;;;;;;;14355:49;14378:7;14387:4;14392:1;14387:7;;;;;;-1:-1:-1::0;;;14387:7:4::1;;;;;;;;14305:121;14445:44;14451:7;14460;14469:4;14483;14445:5;:44::i;:::-;14524:12;-1:-1:-1::0;;;;;14508:34:4::1;;14556:5;14575:7;14600:1;14583:7;:14;:18;;;;:::i;:::-;14575:27;;;;;;-1:-1:-1::0;;;14575:27:4::1;;;;;;;;;;;;;;;14508:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14631:63;14662:2;14666:7;14691:1;14674:7;:14;:18;;;;:::i;:::-;14666:27;;;;;;-1:-1:-1::0;;;14666:27:4::1;;;;;;;;;;;;;;;14631:30;:63::i;:::-;500:1:2;;;;13662:1039:4::0;;;;;;:::o;14711:1218::-;14908:8;454:15:2;442:8;:27;;434:56;;;;-1:-1:-1;;;434:56:2;;;;;;;:::i;:::-;14928:15:4::1;14983:4;-1:-1:-1::0;;;;;14954:43:4::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14928:72;;15010:20;15070:4;-1:-1:-1::0;;;;;15041:48:4::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15010:82;;15102:10;15149:4;-1:-1:-1::0;;;;;15120:54:4::1;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15102:75;;15188:21;15212:53;15240:7;15249:9;15260:4;15212:27;:53::i;:::-;15188:77;;15297:11;15283:7;15291:1;15283:10;;;;;;-1:-1:-1::0;;;15283:10:4::1;;;;;;;;;;;;;;;:25;;15275:60;;;;-1:-1:-1::0;;;15275:60:4::1;;;;;;;:::i;:::-;15364:15;15435:1:::0;15421:7:::1;15429:1;15421:10;;;;;;-1:-1:-1::0;;;15421:10:4::1;;;;;;;;;;;;;;;15407:11;:24;;;;:::i;:::-;15394:37;;;15393:43;15389:115;;;15450:54;15478:4;15483:1;15478:7;;;;;;-1:-1:-1::0;;;15478:7:4::1;;;;;;;;;;;;;;;15487:4;15493:10;15450:27;:54::i;:::-;500:1:2;15533:121:4;15574:4;15579:1;15574:7;;;;;;-1:-1:-1::0;;;15574:7:4::1;;;;;;;;;;;;;;;15583:49;15606:7;15615:4;15620:1;15615:7;;;;;;-1:-1:-1::0;;;15615:7:4::1;;;;;;;;15533:121;15673:44;15679:7;15688;15697:4;15711;15673:5;:44::i;:::-;15752:12;-1:-1:-1::0;;;;;15736:34:4::1;;15784:5;15803:7;15828:1;15811:7;:14;:18;;;;:::i;:::-;15803:27;;;;;;-1:-1:-1::0;;;15803:27:4::1;;;;;;;;;;;;;;;15736:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15859:63;15890:2;15894:7;15919:1;15902:7;:14;:18;;;;:::i;15859:63::-;500:1:2;;;;14711:1218:4::0;;;;;;;:::o;1446:197:36:-;1558:12;;;1518;1558;;;;;;;;;-1:-1:-1;;;;;1536:7:36;;;1551:5;;1536:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:54;;;1589:7;1581:55;;;;-1:-1:-1;;;1581:55:36;;;;;;;:::i;:::-;1446:197;;;:::o;1527:429:32:-;1650:16;1668;1697:14;1717:26;1728:6;1736;1717:10;:26::i;:::-;1696:47;;;1754:16;1772;1807:32;1815:7;1824:6;1832;1807:7;:32::i;:::-;-1:-1:-1;;;;;1794:58:32;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1753:101;;;;;;;;;1897:6;-1:-1:-1;;;;;1887:16:32;:6;-1:-1:-1;;;;;1887:16:32;;:62;;1930:8;1940;1887:62;;;1907:8;1917;1887:62;1864:85;;;;-1:-1:-1;1527:429:32;-1:-1:-1;;;;;;;1527:429:32:o;2540:557::-;2672:17;2720:1;2709:8;:12;2701:66;;;;-1:-1:-1;;;2701:66:32;;;;;;;:::i;:::-;2797:1;2785:9;:13;:31;;;;;2815:1;2802:10;:14;2785:31;2777:82;;;;-1:-1:-1;;;2777:82:32;;;;;;;:::i;:::-;2869:23;2895:17;:8;2908:3;2895:12;:17::i;:::-;2869:43;-1:-1:-1;2922:17:32;2942:31;2869:43;2962:10;2942:19;:31::i;:::-;2922:51;-1:-1:-1;2983:19:32;3005:40;3029:15;3005:19;:9;3019:4;3005:13;:19::i;:::-;:23;;:40::i;:::-;2983:62;-1:-1:-1;3067:23:32;2983:62;3067:9;:23;:::i;:::-;3055:35;2540:557;-1:-1:-1;;;;;;;2540:557:32:o;334:341::-;409:14;425;469:6;-1:-1:-1;;;;;459:16:32;:6;-1:-1:-1;;;;;459:16:32;;;451:64;;;;-1:-1:-1;;;451:64:32;;;;;;;:::i;:::-;553:6;-1:-1:-1;;;;;544:15:32;:6;-1:-1:-1;;;;;544:15:32;;:53;;582:6;590;544:53;;;563:6;571;544:53;525:72;;-1:-1:-1;525:72:32;-1:-1:-1;;;;;;615:20:32;;607:61;;;;-1:-1:-1;;;607:61:32;;;;;;;:::i;3215:510::-;3347:16;3395:1;3383:9;:13;3375:68;;;;-1:-1:-1;;;3375:68:32;;;;;;;:::i;:::-;3473:1;3461:9;:13;:31;;;;;3491:1;3478:10;:14;3461:31;3453:82;;;;-1:-1:-1;;;3453:82:32;;;;;;;:::i;:::-;3545:17;3565:34;3594:4;3565:24;:9;3579;3565:13;:24::i;:::-;:28;;:34::i;:::-;3545:54;-1:-1:-1;3609:19:32;3631:34;3661:3;3631:25;:10;3646:9;3631:14;:25::i;:34::-;3609:56;-1:-1:-1;3686:32:32;3716:1;3687:23;3609:56;3687:9;:23;:::i;3686:32::-;3675:43;3215:510;-1:-1:-1;;;;;;3215:510:32:o;458:140:35:-;510:6;536;;;:30;;-1:-1:-1;565:1:35;560;551:5;560:1;565;551:5;:::i;:::-;547:9;-1:-1:-1;546:15:35;;547:9;546:15;:::i;:::-;:20;536:30;528:63;;;;-1:-1:-1;;;528:63:35;;;;;;;:::i;:::-;458:140;;;;:::o;193:126::-;245:6;286:1;276:5;280:1;286;276:5;:::i;:::-;272:9;;;271:16;;263:49;;;;-1:-1:-1;;;263:49:35;;;;;;;:::i;325:127::-;377:6;418:1;408:5;412:1;418;408:5;:::i;:::-;404:9;;;403:16;;395:50;;;;-1:-1:-1;;;395:50:35;;;;;;;:::i;14:150:38:-;103:13;;125:33;103:13;125:33;:::i;169:782::-;;282:3;275:4;267:6;263:17;259:27;249:2;;304:5;297;290:20;249:2;344:6;331:20;370:4;394:65;409:49;455:2;409:49;:::i;:::-;394:65;:::i;:::-;493:15;;;524:12;;;;556:15;;;602:11;;;590:24;;586:33;;583:42;-1:-1:-1;580:2:38;;;642:5;635;628:20;580:2;668:5;682:240;696:2;693:1;690:9;682:240;;;767:3;754:17;784:33;811:5;784:33;:::i;:::-;830:18;;868:12;;;;900;;;;714:1;707:9;682:240;;;-1:-1:-1;940:5:38;;239:712;-1:-1:-1;;;;;;;239:712:38:o;956:404::-;;;1089:3;1082:4;1074:6;1070:17;1066:27;1056:2;;1114:8;1104;1097:26;1056:2;-1:-1:-1;1144:20:38;;1187:18;1176:30;;1173:2;;;1226:8;1216;1209:26;1173:2;1270:4;1262:6;1258:17;1246:29;;1333:3;1326:4;1318;1310:6;1306:17;1298:6;1294:30;1290:41;1287:50;1284:2;;;1350:1;1347;1340:12;1365:377;;;1482:3;1475:4;1467:6;1463:17;1459:27;1449:2;;1507:8;1497;1490:26;1449:2;-1:-1:-1;1537:20:38;;1580:18;1569:30;;1566:2;;;1619:8;1609;1602:26;1566:2;1663:4;1655:6;1651:17;1639:29;;1715:3;1708:4;1699:6;1691;1687:19;1683:30;1680:39;1677:2;;;1732:1;1729;1722:12;1747:190;1828:13;;1881:30;1870:42;;1860:53;;1850:2;;1927:1;1924;1917:12;1942:263;;2065:2;2053:9;2044:7;2040:23;2036:32;2033:2;;;2086:6;2078;2071:22;2033:2;2123:9;2117:16;2142:33;2169:5;2142:33;:::i;2210:1396::-;;;;;;;;;2479:3;2467:9;2458:7;2454:23;2450:33;2447:2;;;2501:6;2493;2486:22;2447:2;2545:9;2532:23;2564:33;2591:5;2564:33;:::i;:::-;2616:5;-1:-1:-1;2673:2:38;2658:18;;2645:32;2686:35;2645:32;2686:35;:::i;:::-;2740:7;-1:-1:-1;2798:2:38;2783:18;;2770:32;2821:18;2851:14;;;2848:2;;;2883:6;2875;2868:22;2848:2;2927:76;2995:7;2986:6;2975:9;2971:22;2927:76;:::i;:::-;3022:8;;-1:-1:-1;2901:102:38;-1:-1:-1;3110:2:38;3095:18;;3082:32;;-1:-1:-1;3126:16:38;;;3123:2;;;3160:6;3152;3145:22;3123:2;3204:78;3274:7;3263:8;3252:9;3248:24;3204:78;:::i;:::-;3301:8;;-1:-1:-1;3178:104:38;-1:-1:-1;3389:3:38;3374:19;;3361:33;;-1:-1:-1;3406:16:38;;;3403:2;;;3440:6;3432;3425:22;3403:2;;3484:62;3538:7;3527:8;3516:9;3512:24;3484:62;:::i;:::-;2437:1169;;;;-1:-1:-1;2437:1169:38;;-1:-1:-1;2437:1169:38;;;;;;3565:8;-1:-1:-1;;;2437:1169:38:o;3611:849::-;;;;;;;3810:3;3798:9;3789:7;3785:23;3781:33;3778:2;;;3832:6;3824;3817:22;3778:2;3876:9;3863:23;3895:33;3922:5;3895:33;:::i;:::-;3947:5;-1:-1:-1;4004:2:38;3989:18;;3976:32;4017:35;3976:32;4017:35;:::i;:::-;4071:7;-1:-1:-1;4125:2:38;4110:18;;4097:32;;-1:-1:-1;4176:2:38;4161:18;;4148:32;;-1:-1:-1;4231:3:38;4216:19;;4203:33;4259:18;4248:30;;4245:2;;;4296:6;4288;4281:22;4245:2;4340:60;4392:7;4383:6;4372:9;4368:22;4340:60;:::i;:::-;3768:692;;;;-1:-1:-1;3768:692:38;;-1:-1:-1;3768:692:38;;4419:8;;3768:692;-1:-1:-1;;;3768:692:38:o;4465:297::-;;4585:2;4573:9;4564:7;4560:23;4556:32;4553:2;;;4606:6;4598;4591:22;4553:2;4643:9;4637:16;4696:5;4689:13;4682:21;4675:5;4672:32;4662:2;;4723:6;4715;4708:22;4767:352;;4878:2;4866:9;4857:7;4853:23;4849:32;4846:2;;;4899:6;4891;4884:22;4846:2;4943:9;4930:23;4993:66;4986:5;4982:78;4975:5;4972:89;4962:2;;5080:6;5072;5065:22;6298:474;;;;6454:2;6442:9;6433:7;6429:23;6425:32;6422:2;;;6475:6;6467;6460:22;6422:2;6503:42;6535:9;6503:42;:::i;:::-;6493:52;;6564:51;6611:2;6600:9;6596:18;6564:51;:::i;:::-;6554:61;;6658:2;6647:9;6643:18;6637:25;6702:10;6695:5;6691:22;6684:5;6681:33;6671:2;;6733:6;6725;6718:22;6671:2;6761:5;6751:15;;;6412:360;;;;;:::o;6777:194::-;;6900:2;6888:9;6879:7;6875:23;6871:32;6868:2;;;6921:6;6913;6906:22;6868:2;-1:-1:-1;6949:16:38;;6858:113;-1:-1:-1;6858:113:38:o;6976:327::-;;;7105:2;7093:9;7084:7;7080:23;7076:32;7073:2;;;7126:6;7118;7111:22;7073:2;7167:9;7154:23;7144:33;;7227:2;7216:9;7212:18;7199:32;7240:33;7267:5;7240:33;:::i;:::-;7292:5;7282:15;;;7063:240;;;;;:::o;7308:324::-;;;7448:2;7436:9;7427:7;7423:23;7419:32;7416:2;;;7469:6;7461;7454:22;7416:2;7503:9;7497:16;7487:26;;7556:2;7545:9;7541:18;7535:25;7569:33;7596:5;7569:33;:::i;7637:1246::-;;;;;7844:3;7832:9;7823:7;7819:23;7815:33;7812:2;;;7866:6;7858;7851:22;7812:2;7900:9;7894:16;7884:26;;7929:2;7975;7964:9;7960:18;7954:25;8002:18;7994:6;7991:30;7988:2;;;8039:6;8031;8024:22;7988:2;8067:22;;8120:4;8112:13;;8108:27;-1:-1:-1;8098:2:38;;8154:6;8146;8139:22;8098:2;8188;8182:9;8211:65;8226:49;8272:2;8226:49;:::i;8211:65::-;8310:15;;;8341:12;;;;8373:11;;;8411;;;8403:20;;8399:29;;8396:42;-1:-1:-1;8393:2:38;;;8456:6;8448;8441:22;8393:2;8483:6;8474:15;;8498:233;8512:2;8509:1;8506:9;8498:233;;;8576:3;8570:10;8593:33;8620:5;8593:33;:::i;:::-;8639:18;;8530:1;8523:9;;;;;8677:12;;;;8709;;8498:233;;;8502:3;8750:5;8740:15;;;;;;;8774:59;8829:2;8818:9;8814:18;8774:59;:::i;:::-;8873:2;8858:18;;;;8852:25;7802:1081;;;;-1:-1:-1;;;7802:1081:38:o;8888:648::-;;;;;9076:3;9064:9;9055:7;9051:23;9047:33;9044:2;;;9098:6;9090;9083:22;9044:2;9139:9;9126:23;9116:33;;9200:2;9189:9;9185:18;9172:32;9227:18;9219:6;9216:30;9213:2;;;9264:6;9256;9249:22;9213:2;9292:67;9351:7;9342:6;9331:9;9327:22;9292:67;:::i;:::-;9282:77;;;9409:2;9398:9;9394:18;9381:32;9422:33;9449:5;9422:33;:::i;:::-;9034:502;;;;-1:-1:-1;9474:5:38;;9526:2;9511:18;9498:32;;-1:-1:-1;;9034:502:38:o;9541:934::-;;;9679:2;9667:9;9658:7;9654:23;9650:32;9647:2;;;9700:6;9692;9685:22;9647:2;9741:9;9728:23;9718:33;;9770:2;9823;9812:9;9808:18;9795:32;9846:18;9887:2;9879:6;9876:14;9873:2;;;9908:6;9900;9893:22;9873:2;9951:6;9940:9;9936:22;9926:32;;9996:7;9989:4;9985:2;9981:13;9977:27;9967:2;;10023:6;10015;10008:22;9967:2;10064;10051:16;10086:2;10082;10079:10;10076:2;;;10092:18;;:::i;:::-;10134:111;10241:2;-1:-1:-1;;10165:4:38;10161:2;10157:13;10153:86;10149:95;10134:111;:::i;:::-;10121:124;;10268:2;10261:5;10254:17;10308:7;10303:2;10298;10294;10290:11;10286:20;10283:33;10280:2;;;10334:6;10326;10319:22;10280:2;10394;10389;10385;10381:11;10376:2;10369:5;10365:14;10352:45;10417:14;;10413:23;;;10406:39;;;;9637:838;;10421:5;;-1:-1:-1;9637:838:38;;-1:-1:-1;;9637:838:38:o;10480:717::-;;;;;;10685:3;10673:9;10664:7;10660:23;10656:33;10653:2;;;10707:6;10699;10692:22;10653:2;10748:9;10735:23;10725:33;;10805:2;10794:9;10790:18;10777:32;10767:42;;10860:2;10849:9;10845:18;10832:32;10887:18;10879:6;10876:30;10873:2;;;10924:6;10916;10909:22;10873:2;10952:67;11011:7;11002:6;10991:9;10987:22;10952:67;:::i;:::-;10942:77;;;11069:2;11058:9;11054:18;11041:32;11082:33;11109:5;11082:33;:::i;:::-;10643:554;;;;-1:-1:-1;10643:554:38;;11186:3;11171:19;11158:33;;10643:554;-1:-1:-1;;10643:554:38:o;11202:368::-;11369:66;11464:2;11460:15;;;11456:24;;11444:37;;11515:15;;;;11511:24;11506:2;11497:12;;11490:46;11561:2;11552:12;;11349:221::o;11575:274::-;;11742:6;11736:13;11758:53;11804:6;11799:3;11792:4;11784:6;11780:17;11758:53;:::i;:::-;11827:16;;;;;11712:137;-1:-1:-1;;11712:137:38:o;11854:724::-;12225:66;12213:79;;12329:2;12325:15;;;;12342:66;12321:88;12317:1;12308:11;;12301:109;12435:2;12426:12;;12419:28;12477:66;12472:2;12463:12;;12456:88;12569:2;12560:12;;12203:375::o;12583:226::-;-1:-1:-1;;;;;12747:55:38;;;;12729:74;;12717:2;12702:18;;12684:125::o;12814:327::-;-1:-1:-1;;;;;13067:15:38;;;13049:34;;13119:15;;13114:2;13099:18;;13092:43;12976:2;12961:18;;12943:198::o;13146:398::-;-1:-1:-1;;;;;13427:15:38;;;13409:34;;13479:15;;;;13474:2;13459:18;;13452:43;13526:2;13511:18;;13504:34;;;;13336:2;13321:18;;13303:241::o;13549:297::-;-1:-1:-1;;;;;13741:55:38;;;;13723:74;;13828:2;13813:18;;13806:34;13711:2;13696:18;;13678:168::o;13851:635::-;14022:2;14074:21;;;14144:13;;14047:18;;;14166:22;;;13851:635;;14022:2;14245:15;;;;14219:2;14204:18;;;13851:635;14291:169;14305:6;14302:1;14299:13;14291:169;;;14366:13;;14354:26;;14435:15;;;;14400:12;;;;14327:1;14320:9;14291:169;;;-1:-1:-1;14477:3:38;;14002:484;-1:-1:-1;;;;;;14002:484:38:o;14491:187::-;14656:14;;14649:22;14631:41;;14619:2;14604:18;;14586:92::o;14683:248::-;14857:66;14845:79;;;;14827:98;;14815:2;14800:18;;14782:149::o;14936:345::-;15138:2;15120:21;;;15177:2;15157:18;;;15150:30;15216:23;15211:2;15196:18;;15189:51;15272:2;15257:18;;15110:171::o;15286:355::-;15488:2;15470:21;;;15527:2;15507:18;;;15500:30;15566:33;15561:2;15546:18;;15539:61;15632:2;15617:18;;15460:181::o;15646:346::-;15848:2;15830:21;;;15887:2;15867:18;;;15860:30;15926:24;15921:2;15906:18;;15899:52;15983:2;15968:18;;15820:172::o;15997:344::-;16199:2;16181:21;;;16238:2;16218:18;;;16211:30;16277:22;16272:2;16257:18;;16250:50;16332:2;16317:18;;16171:170::o;16346:344::-;16548:2;16530:21;;;16587:2;16567:18;;;16560:30;16626:22;16621:2;16606:18;;16599:50;16681:2;16666:18;;16520:170::o;16695:406::-;16897:2;16879:21;;;16936:2;16916:18;;;16909:30;16975:34;16970:2;16955:18;;16948:62;17046:12;17041:2;17026:18;;17019:40;17091:3;17076:19;;16869:232::o;17106:352::-;17308:2;17290:21;;;17347:2;17327:18;;;17320:30;17386;17381:2;17366:18;;17359:58;17449:2;17434:18;;17280:178::o;17463:405::-;17665:2;17647:21;;;17704:2;17684:18;;;17677:30;17743:34;17738:2;17723:18;;17716:62;17814:11;17809:2;17794:18;;17787:39;17858:3;17843:19;;17637:231::o;17873:340::-;18075:2;18057:21;;;18114:2;18094:18;;;18087:30;18153:18;18148:2;18133:18;;18126:46;18204:2;18189:18;;18047:166::o;18218:399::-;18420:2;18402:21;;;18459:2;18439:18;;;18432:30;18498:34;18493:2;18478:18;;18471:62;18569:5;18564:2;18549:18;;18542:33;18607:3;18592:19;;18392:225::o;18622:350::-;18824:2;18806:21;;;18863:2;18843:18;;;18836:30;18902:28;18897:2;18882:18;;18875:56;18963:2;18948:18;;18796:176::o;18977:399::-;19179:2;19161:21;;;19218:2;19198:18;;;19191:30;19257:34;19252:2;19237:18;;19230:62;19328:5;19323:2;19308:18;;19301:33;19366:3;19351:19;;19151:225::o;19381:402::-;19583:2;19565:21;;;19622:2;19602:18;;;19595:30;19661:34;19656:2;19641:18;;19634:62;19732:8;19727:2;19712:18;;19705:36;19773:3;19758:19;;19555:228::o;19788:400::-;19990:2;19972:21;;;20029:2;20009:18;;;20002:30;20068:34;20063:2;20048:18;;20041:62;20139:6;20134:2;20119:18;;20112:34;20178:3;20163:19;;19962:226::o;20193:352::-;20395:2;20377:21;;;20434:2;20414:18;;;20407:30;20473;20468:2;20453:18;;20446:58;20536:2;20521:18;;20367:178::o;20550:177::-;20696:25;;;20684:2;20669:18;;20651:76::o;20732:248::-;20906:25;;;20962:2;20947:18;;20940:34;20894:2;20879:18;;20861:119::o;20985:706::-;;21216:6;21205:9;21198:25;21259:6;21254:2;21243:9;21239:18;21232:34;-1:-1:-1;;;;;21306:6:38;21302:55;21297:2;21286:9;21282:18;21275:83;21394:3;21389:2;21378:9;21374:18;21367:31;21427:6;21421:13;21471:6;21465:3;21454:9;21450:19;21443:35;21487:67;21547:6;21541:3;21530:9;21526:19;21521:2;21513:6;21509:15;21487:67;:::i;:::-;21606:2;21594:15;-1:-1:-1;;21590:88:38;21575:104;;;;21681:3;21571:114;;21188:503;-1:-1:-1;;;;;21188:503:38:o;21696:251::-;21766:2;21760:9;21796:17;;;21843:18;21828:34;;21864:22;;;21825:62;21822:2;;;21890:18;;:::i;:::-;21926:2;21919:22;21740:207;;-1:-1:-1;21740:207:38:o;21952:192::-;;22051:18;22043:6;22040:30;22037:2;;;22073:18;;:::i;:::-;-1:-1:-1;22133:4:38;22114:17;;;22110:28;;22027:117::o;22149:128::-;;22220:1;22216:6;22213:1;22210:13;22207:2;;;22226:18;;:::i;:::-;-1:-1:-1;22262:9:38;;22197:80::o;22282:274::-;;22348:1;22338:2;;-1:-1:-1;;;22380:1:38;22373:88;22484:4;22481:1;22474:15;22512:4;22509:1;22502:15;22338:2;-1:-1:-1;22541:9:38;;22328:228::o;22561:453::-;22657:6;22680:5;22694:314;22743:1;22780:2;22770:8;22767:16;22757:2;;22787:5;;;22757:2;22828:4;22823:3;22819:14;22813:4;22810:24;22807:2;;;22837:18;;:::i;:::-;22887:2;22877:8;22873:17;22870:2;;;22902:16;;;;22870:2;22981:17;;;;;22941:15;;22694:314;;;22638:376;;;;;;;:::o;23019:199::-;;23108:104;-1:-1:-1;;23135:8:38;23129:4;23223:922;23307:8;23297:2;;-1:-1:-1;23348:1:38;23362:5;;23297:2;23396:4;23386:2;;-1:-1:-1;23433:1:38;23447:5;;23386:2;23478:4;23496:1;23491:59;;;;23564:1;23559:183;;;;23471:271;;23491:59;23521:1;23512:10;;23535:5;;;23559:183;23596:3;23586:8;23583:17;23580:2;;;23603:18;;:::i;:::-;23659:1;23649:8;23645:16;23636:25;;23687:3;23680:5;23677:14;23674:2;;;23694:18;;:::i;:::-;23727:5;;;23471:271;;23826:2;23816:8;23813:16;23807:3;23801:4;23798:13;23794:36;23788:2;23778:8;23775:16;23770:2;23764:4;23761:12;23757:35;23754:77;23751:2;;;-1:-1:-1;23863:19:38;;;23898:14;;;23895:2;;;23915:18;;:::i;:::-;23948:5;;23751:2;23995:42;24033:3;24023:8;24017:4;24014:1;23995:42;:::i;:::-;24070:6;24065:3;24061:16;24052:7;24049:29;24046:2;;;24081:18;;:::i;:::-;24119:20;;23287:858;-1:-1:-1;;;;23287:858:38:o;24150:228::-;;24316:1;-1:-1:-1;;24244:74:38;24241:1;24238:81;24233:1;24226:9;24219:17;24215:105;24212:2;;;24323:18;;:::i;:::-;-1:-1:-1;24363:9:38;;24202:176::o;24383:125::-;;24451:1;24448;24445:8;24442:2;;;24456:18;;:::i;:::-;-1:-1:-1;24493:9:38;;24432:76::o;24513:258::-;24585:1;24595:113;24609:6;24606:1;24603:13;24595:113;;;24685:11;;;24679:18;24666:11;;;24659:39;24631:2;24624:10;24595:113;;;24726:6;24723:1;24720:13;24717:2;;;-1:-1:-1;;24761:1:38;24743:16;;24736:27;24566:205::o;24776:196::-;;24843:5;24833:2;;24852:18;;:::i;:::-;-1:-1:-1;;;24888:78:38;;24823:149::o;24977:195::-;;-1:-1:-1;;25040:5:38;25037:77;25034:2;;;25117:18;;:::i;:::-;-1:-1:-1;25164:1:38;25153:13;;25024:148::o;25177:184::-;-1:-1:-1;;;25226:1:38;25219:88;25326:4;25323:1;25316:15;25350:4;25347:1;25340:15;25366:184;-1:-1:-1;;;25415:1:38;25408:88;25515:4;25512:1;25505:15;25539:4;25536:1;25529:15;25555:156;-1:-1:-1;;;;;25636:5:38;25632:54;25625:5;25622:65;25612:2;;25701:1;25698;25691:12;25612:2;25602:109;:::o"
    },
    "contracts/examples/ExampleComputeLiquidityValue.sol:ExampleComputeLiquidityValue": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "factory_",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAmount",
              "type": "uint256"
            }
          ],
          "name": "getGasCostOfGetLiquidityValueAfterArbitrageToPrice",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAmount",
              "type": "uint256"
            }
          ],
          "name": "getLiquidityValue",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "tokenAAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenBAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAmount",
              "type": "uint256"
            }
          ],
          "name": "getLiquidityValueAfterArbitrageToPrice",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "tokenAAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenBAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenB",
              "type": "uint256"
            }
          ],
          "name": "getReservesAfterArbitrage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "60a060405234801561001057600080fd5b506040516114bf3803806114bf83398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c6114146100ab6000396000818160f9015281816101370152818161017a015281816101c201526101ec01526114146000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806380caa3531161005057806380caa353146100a9578063c45a0155146100c9578063d9b7a6e7146100de57610067565b80633558e94c1461006c57806369a2fcbd14610096575b600080fd5b61007f61007a366004610e4a565b6100f1565b60405161008d9291906112d7565b60405180910390f35b61007f6100a4366004610e8f565b61012f565b6100bc6100b7366004610e8f565b61016f565b60405161008d91906112ce565b6100d16101c0565b60405161008d9190611000565b61007f6100ec366004610e0a565b6101e4565b6000806101217f00000000000000000000000000000000000000000000000000000000000000008787878761021f565b915091505b94509492505050565b6000806101607f0000000000000000000000000000000000000000000000000000000000000000888888888861030b565b915091505b9550959350505050565b6000805a90506101a37f0000000000000000000000000000000000000000000000000000000000000000888888888861030b565b505060005a90506101b48183611373565b98975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102137f000000000000000000000000000000000000000000000000000000000000000086868661055b565b91509150935093915050565b60008061022d878787610761565b909250905081158015906102415750600081115b610280576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610277906110c6565b60405180910390fd5b60008061028f8686868661086f565b9150915080600014156102a3575050610165565b81156102d65760006102b682868661094b565b90506102c282866112e5565b94506102ce8185611373565b9350506102ff565b60006102e382858761094b565b90506102ef82856112e5565b93506102fb8186611373565b9450505b50509550959350505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561036d57600080fd5b505afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610de7565b73ffffffffffffffffffffffffffffffffffffffff161415905060006103cc8a8a8a610a19565b90506000826103dc57600061045a565b8173ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042257600080fd5b505afa158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610f2d565b905060008273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104a457600080fd5b505afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc9190610f2d565b90508681101580156104ee5750600087115b610524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102779061123a565b6000806105348e8e8e8e8e61021f565b915091506105468282858c8a89610aa7565b97509750505050505050965096945050505050565b60008060008061056c888888610761565b91509150600061057d898989610a19565b905060008073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156105de57600080fd5b505afa1580156105f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106169190610de7565b73ffffffffffffffffffffffffffffffffffffffff161415905060008161063e5760006106bc565b8273ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068457600080fd5b505afa158015610698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bc9190610f2d565b905060008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561070657600080fd5b505afa15801561071a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073e9190610f2d565b905061074e8686838c8787610aa7565b9750975050505050505094509492505050565b60008060006107708585610b6a565b509050600080610781888888610a19565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156107c657600080fd5b505afa1580156107da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fe9190610edf565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461085d578082610860565b81815b90999098509650505050505050565b600080858361087e8688610c69565b61088891906112fd565b10915060006108978585610c69565b905060006108e76108b76103e5866108af578a6108b1565b895b90610c69565b6108d86108c6856103e8610c69565b876108d1578a6108d3565b8b5b610c69565b6108e291906112fd565b610cc9565b905060006103e585610904576108ff876103e8610c69565b610910565b610910886103e8610c69565b61091a91906112fd565b9050808210156109335760008094509450505050610126565b61093d8282610d39565b935050505094509492505050565b6000808411610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611123565b6000831180156109965750600082115b6109cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610277906111dd565b60006109da856103e5610c69565b905060006109e88285610c69565b90506000610a02836109fc886103e8610c69565b90610d81565b9050610a0e81836112fd565b979650505050505050565b6000806000610a288585610b6a565b91509150858282604051602001610a40929190610f45565b60405160208183030381529060405280519060200120604051602001610a67929190610f7f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b600080838015610ab75750600083115b15610b31576000610acb6108e28a8a610c69565b90506000610ad885610cc9565b905080821115610b2e57876000610aef8484610d39565b90506000610b02846109fc876005610c69565b9050600081610b118585610c69565b610b1b91906112fd565b9050610b278c82610d81565b9b50505050505b50505b85610b3c8987610c69565b610b4691906112fd565b86610b518988610c69565b610b5b91906112fd565b91509150965096945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611180565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610c0d578284610c10565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610c62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611297565b9250929050565b6000811580610c8d57508282610c7f8183611336565b9250610c8b90836112fd565b145b610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611058565b92915050565b60006003821115610d2a5750806000610ce36002836112fd565b610cee9060016112e5565b90505b81811015610d2457905080600281610d0981866112fd565b610d1391906112e5565b610d1d91906112fd565b9050610cf1565b50610d34565b8115610d34575060015b919050565b600082610d468382611373565b9150811115610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611021565b600082610d8e83826112e5565b9150811015610cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102779061108f565b80516dffffffffffffffffffffffffffff81168114610d3457600080fd5b600060208284031215610df8578081fd5b8151610e03816113b9565b9392505050565b600080600060608486031215610e1e578182fd5b8335610e29816113b9565b92506020840135610e39816113b9565b929592945050506040919091013590565b60008060008060808587031215610e5f578081fd5b8435610e6a816113b9565b93506020850135610e7a816113b9565b93969395505050506040820135916060013590565b600080600080600060a08688031215610ea6578081fd5b8535610eb1816113b9565b94506020860135610ec1816113b9565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215610ef3578283fd5b610efc84610dc9565b9250610f0a60208501610dc9565b9150604084015163ffffffff81168114610f22578182fd5b809150509250925092565b600060208284031215610f3e578081fd5b5051919050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252602b908201527f4d6174657269614172626974726167654c6962726172793a205a45524f5f504160408201527f49525f5245534552564553000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526027908201527f436f6d707574654c697175696469747956616c75653a204c495155494449545960408201527f5f414d4f554e5400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b600082198211156112f8576112f861138a565b500190565b600082611331577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561136e5761136e61138a565b500290565b6000828210156113855761138561138a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146113db57600080fd5b5056fea2646970667358221220579dfe9cfd1449f3d03f1178e62850a8cbf4a3e9703a02341ecef1ed9bd86efd64736f6c63430008000033",
          "sourceMap": "81:2419:5:-:0;;;197:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;244:18;;-1:-1:-1;;;;;;244:18:5;;;81:2419;;14:310:38;;137:2;125:9;116:7;112:23;108:32;105:2;;;158:6;150;143:22;105:2;189:16;;-1:-1:-1;;;;;234:31:38;;224:42;;214:2;;285:6;277;270:22;214:2;313:5;95:229;-1:-1:-1;;;95:229:38:o;:::-;81:2419:5;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "object": "608060405234801561001057600080fd5b50600436106100675760003560e01c806380caa3531161005057806380caa353146100a9578063c45a0155146100c9578063d9b7a6e7146100de57610067565b80633558e94c1461006c57806369a2fcbd14610096575b600080fd5b61007f61007a366004610e4a565b6100f1565b60405161008d9291906112d7565b60405180910390f35b61007f6100a4366004610e8f565b61012f565b6100bc6100b7366004610e8f565b61016f565b60405161008d91906112ce565b6100d16101c0565b60405161008d9190611000565b61007f6100ec366004610e0a565b6101e4565b6000806101217f00000000000000000000000000000000000000000000000000000000000000008787878761021f565b915091505b94509492505050565b6000806101607f0000000000000000000000000000000000000000000000000000000000000000888888888861030b565b915091505b9550959350505050565b6000805a90506101a37f0000000000000000000000000000000000000000000000000000000000000000888888888861030b565b505060005a90506101b48183611373565b98975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102137f000000000000000000000000000000000000000000000000000000000000000086868661055b565b91509150935093915050565b60008061022d878787610761565b909250905081158015906102415750600081115b610280576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610277906110c6565b60405180910390fd5b60008061028f8686868661086f565b9150915080600014156102a3575050610165565b81156102d65760006102b682868661094b565b90506102c282866112e5565b94506102ce8185611373565b9350506102ff565b60006102e382858761094b565b90506102ef82856112e5565b93506102fb8186611373565b9450505b50509550959350505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561036d57600080fd5b505afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610de7565b73ffffffffffffffffffffffffffffffffffffffff161415905060006103cc8a8a8a610a19565b90506000826103dc57600061045a565b8173ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042257600080fd5b505afa158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610f2d565b905060008273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104a457600080fd5b505afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc9190610f2d565b90508681101580156104ee5750600087115b610524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102779061123a565b6000806105348e8e8e8e8e61021f565b915091506105468282858c8a89610aa7565b97509750505050505050965096945050505050565b60008060008061056c888888610761565b91509150600061057d898989610a19565b905060008073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156105de57600080fd5b505afa1580156105f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106169190610de7565b73ffffffffffffffffffffffffffffffffffffffff161415905060008161063e5760006106bc565b8273ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068457600080fd5b505afa158015610698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bc9190610f2d565b905060008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561070657600080fd5b505afa15801561071a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073e9190610f2d565b905061074e8686838c8787610aa7565b9750975050505050505094509492505050565b60008060006107708585610b6a565b509050600080610781888888610a19565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156107c657600080fd5b505afa1580156107da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fe9190610edf565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461085d578082610860565b81815b90999098509650505050505050565b600080858361087e8688610c69565b61088891906112fd565b10915060006108978585610c69565b905060006108e76108b76103e5866108af578a6108b1565b895b90610c69565b6108d86108c6856103e8610c69565b876108d1578a6108d3565b8b5b610c69565b6108e291906112fd565b610cc9565b905060006103e585610904576108ff876103e8610c69565b610910565b610910886103e8610c69565b61091a91906112fd565b9050808210156109335760008094509450505050610126565b61093d8282610d39565b935050505094509492505050565b6000808411610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611123565b6000831180156109965750600082115b6109cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610277906111dd565b60006109da856103e5610c69565b905060006109e88285610c69565b90506000610a02836109fc886103e8610c69565b90610d81565b9050610a0e81836112fd565b979650505050505050565b6000806000610a288585610b6a565b91509150858282604051602001610a40929190610f45565b60405160208183030381529060405280519060200120604051602001610a67929190610f7f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b600080838015610ab75750600083115b15610b31576000610acb6108e28a8a610c69565b90506000610ad885610cc9565b905080821115610b2e57876000610aef8484610d39565b90506000610b02846109fc876005610c69565b9050600081610b118585610c69565b610b1b91906112fd565b9050610b278c82610d81565b9b50505050505b50505b85610b3c8987610c69565b610b4691906112fd565b86610b518988610c69565b610b5b91906112fd565b91509150965096945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611180565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610c0d578284610c10565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610c62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611297565b9250929050565b6000811580610c8d57508282610c7f8183611336565b9250610c8b90836112fd565b145b610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611058565b92915050565b60006003821115610d2a5750806000610ce36002836112fd565b610cee9060016112e5565b90505b81811015610d2457905080600281610d0981866112fd565b610d1391906112e5565b610d1d91906112fd565b9050610cf1565b50610d34565b8115610d34575060015b919050565b600082610d468382611373565b9150811115610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611021565b600082610d8e83826112e5565b9150811015610cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102779061108f565b80516dffffffffffffffffffffffffffff81168114610d3457600080fd5b600060208284031215610df8578081fd5b8151610e03816113b9565b9392505050565b600080600060608486031215610e1e578182fd5b8335610e29816113b9565b92506020840135610e39816113b9565b929592945050506040919091013590565b60008060008060808587031215610e5f578081fd5b8435610e6a816113b9565b93506020850135610e7a816113b9565b93969395505050506040820135916060013590565b600080600080600060a08688031215610ea6578081fd5b8535610eb1816113b9565b94506020860135610ec1816113b9565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215610ef3578283fd5b610efc84610dc9565b9250610f0a60208501610dc9565b9150604084015163ffffffff81168114610f22578182fd5b809150509250925092565b600060208284031215610f3e578081fd5b5051919050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252602b908201527f4d6174657269614172626974726167654c6962726172793a205a45524f5f504160408201527f49525f5245534552564553000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526027908201527f436f6d707574654c697175696469747956616c75653a204c495155494449545960408201527f5f414d4f554e5400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b600082198211156112f8576112f861138a565b500190565b600082611331577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561136e5761136e61138a565b500290565b6000828210156113855761138561138a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146113db57600080fd5b5056fea2646970667358221220579dfe9cfd1449f3d03f1178e62850a8cbf4a3e9703a02341ecef1ed9bd86efd64736f6c63430008000033",
          "sourceMap": "81:2419:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;340:420;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1279:538;;;;;;:::i;:::-;;:::i;1890:608::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;158:32::-;;;:::i;:::-;;;;;;;:::i;823:372::-;;;;;;:::i;:::-;;:::i;340:420::-;518:16;536;571:182;638:7;659:6;679;699:15;728;571:53;:182::i;:::-;564:189;;;;340:420;;;;;;;;:::o;1279:538::-;1512:20;1542;1586:224;1666:7;1687:6;1707;1727:15;1756;1785;1586:66;:224::i;:::-;1579:231;;;;1279:538;;;;;;;;;:::o;1890:608::-;2135:7;2159:14;2176:9;2159:26;;2195:224;2275:7;2296:6;2316;2336:15;2365;2394;2195:66;:224::i;:::-;;;2429:13;2445:9;2429:25;-1:-1:-1;2471:20:5;2429:25;2471:9;:20;:::i;:::-;2464:27;1890:608;-1:-1:-1;;;;;;;;1890:608:5:o;158:32::-;;;:::o;823:372::-;969:20;999;1043:145;1102:7;1123:6;1143;1163:15;1043:45;:145::i;:::-;1036:152;;;;823:372;;;;;;:::o;1515:1153:33:-;1718:16;1736;1833:51;1860:7;1869:6;1877;1833:26;:51::i;:::-;1810:74;;-1:-1:-1;1810:74:33;-1:-1:-1;1903:12:33;;;;;:28;;;1930:1;1919:8;:12;1903:28;1895:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;2057:9;2068:16;2088:82;2117:15;2134;2151:8;2161;2088:28;:82::i;:::-;2056:114;;;;2185:8;2197:1;2185:13;2181:71;;;2214:27;;;;2181:71;2314:4;2310:352;;;2334:14;2351:57;2379:8;2389;2399;2351:27;:57::i;:::-;2334:74;-1:-1:-1;2422:20:33;2434:8;2422:20;;:::i;:::-;;-1:-1:-1;2456:21:33;2468:9;2456:21;;:::i;:::-;;;2310:352;;;;2508:14;2525:57;2553:8;2563;2573;2525:27;:57::i;:::-;2508:74;-1:-1:-1;2596:20:33;2608:8;2596:20;;:::i;:::-;;-1:-1:-1;2630:21:33;2642:9;2630:21;;:::i;:::-;;;2310:352;;1515:1153;;;;;;;;;;:::o;4799:976::-;5057:20;5087;5124:10;5181:1;5137:46;;5153:7;5137:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;5124:59;;5193:17;5226:47;5249:7;5258:6;5266;5226:22;:47::i;:::-;5193:81;;5284:10;5297:5;:24;;5320:1;5297:24;;;5305:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5284:37;;5331:16;5350:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5331:37;;5451:15;5436:11;:30;;:53;;;;;5488:1;5470:15;:19;5436:53;5428:105;;;;;;;;;;;;:::i;:::-;5545:14;5561;5579:84;5605:7;5614:6;5622;5630:15;5647;5579:25;:84::i;:::-;5544:119;;;;5681:87;5703:9;5714;5725:11;5738:15;5755:5;5762;5681:21;:87::i;:::-;5674:94;;;;;;;;;;4799:976;;;;;;;;;:::o;3900:673::-;4062:20;4084;4117:17;4136;4157:51;4184:7;4193:6;4201;4157:26;:51::i;:::-;4116:92;;;;4218:17;4251:47;4274:7;4283:6;4291;4251:22;:47::i;:::-;4218:81;;4309:10;4366:1;4322:46;;4338:7;4322:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;4309:59;;4378:10;4391:5;:24;;4414:1;4391:24;;;4399:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4378:37;;4425:16;4444:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4425:37;;4479:87;4501:9;4512;4523:11;4536:15;4553:5;4560;4479:21;:87::i;:::-;4472:94;;;;;;;;;;3900:673;;;;;;;:::o;1527:429:32:-;1650:16;1668;1697:14;1717:26;1728:6;1736;1717:10;:26::i;:::-;1696:47;;;1754:16;1772;1807:32;1815:7;1824:6;1832;1807:7;:32::i;:::-;1794:58;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1753:101;;;;;;;;;1897:6;1887:16;;:6;:16;;;:62;;1930:8;1940;1887:62;;;1907:8;1917;1887:62;1864:85;;;;-1:-1:-1;1527:429:32;-1:-1:-1;;;;;;;1527:429:32:o;488:890:33:-;673:9;684:16;770:15;759:8;719:39;732:8;742:15;719:12;:39::i;:::-;:48;;;;:::i;:::-;:66;;-1:-1:-1;796:17:33;816:22;:8;829;816:12;:22::i;:::-;796:42;;849:16;868:223;1017:51;1064:3;1018:4;:40;;1043:15;1018:40;;;1025:15;1018:40;1017:46;;:51::i;:::-;891:108;921:19;:9;935:4;921:13;:19::i;:::-;958:4;:40;;983:15;958:40;;;965:15;958:40;891:12;:108::i;:::-;:177;;;;:::i;:::-;868:9;:223::i;:::-;849:242;;1101:17;1172:3;1122:4;:46;;1150:18;:8;1163:4;1150:12;:18::i;:::-;1122:46;;;1129:18;:8;1142:4;1129:12;:18::i;:::-;1121:54;;;;:::i;:::-;1101:74;;1201:9;1190:8;:20;1186:43;;;1220:5;1227:1;1212:17;;;;;;;;;1186:43;1348:23;:8;1361:9;1348:12;:23::i;:::-;1337:34;;488:890;;;;;;;;;;:::o;2540:557:32:-;2672:17;2720:1;2709:8;:12;2701:66;;;;;;;;;;;;:::i;:::-;2797:1;2785:9;:13;:31;;;;;2815:1;2802:10;:14;2785:31;2777:82;;;;;;;;;;;;:::i;:::-;2869:23;2895:17;:8;2908:3;2895:12;:17::i;:::-;2869:43;-1:-1:-1;2922:17:32;2942:31;2869:43;2962:10;2942:19;:31::i;:::-;2922:51;-1:-1:-1;2983:19:32;3005:40;3029:15;3005:19;:9;3019:4;3005:13;:19::i;:::-;:23;;:40::i;:::-;2983:62;-1:-1:-1;3067:23:32;2983:62;3067:9;:23;:::i;:::-;3055:35;2540:557;-1:-1:-1;;;;;;;2540:557:32:o;764:708::-;883:12;908:14;924;942:26;953:6;961;942:10;:26::i;:::-;907:61;;;;1178:7;1242:6;1250;1225:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1215:43;;;;;;1095:306;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1060:363;;1095:306;1060:363;;;;;764:708;-1:-1:-1;;;;;;764:708:32:o;2743:895:33:-;2959:20;2981;3017:5;:18;;;;;3034:1;3026:5;:9;3017:18;3013:510;;;3051:10;3064:35;3074:24;:9;3088;3074:13;:24::i;3064:35::-;3051:48;;3113:14;3130:16;3140:5;3130:9;:16::i;:::-;3113:33;;3172:9;3164:5;:17;3160:353;;;3219:11;3201:15;3266:20;:5;3276:9;3266;:20::i;:::-;3248:38;-1:-1:-1;3304:16:33;3323:27;3340:9;3323:12;:5;3333:1;3323:9;:12::i;:27::-;3304:46;;3368:17;3426:11;3388:36;3401:10;3413;3388:12;:36::i;:::-;:49;;;;:::i;:::-;3368:69;-1:-1:-1;3469:29:33;:11;3368:69;3469:15;:29::i;:::-;3455:43;;3160:353;;;;;3013:510;;;3573:11;3540:30;:9;3554:15;3540:13;:30::i;:::-;:44;;;;:::i;:::-;3619:11;3586:30;:9;3600:15;3586:13;:30::i;:::-;:44;;;;:::i;:::-;3532:99;;;;2743:895;;;;;;;;;:::o;334:341:32:-;409:14;425;469:6;459:16;;:6;:16;;;;451:64;;;;;;;;;;;;:::i;:::-;553:6;544:15;;:6;:15;;;:53;;582:6;590;544:53;;;563:6;571;544:53;525:72;;-1:-1:-1;525:72:32;-1:-1:-1;615:20:32;;;607:61;;;;;;;;;;;;:::i;:::-;334:341;;;;;:::o;458:140:35:-;510:6;536;;;:30;;-1:-1:-1;565:1:35;560;551:5;560:1;565;551:5;:::i;:::-;547:9;-1:-1:-1;546:15:35;;547:9;546:15;:::i;:::-;:20;536:30;528:63;;;;;;;;;;;;:::i;:::-;458:140;;;;:::o;346:292:34:-;391:6;417:1;413;:5;409:223;;;-1:-1:-1;438:1:34;453:6;462:5;466:1;438;462:5;:::i;:::-;:9;;470:1;462:9;:::i;:::-;453:18;;485:89;496:1;492;:5;485:89;;;521:1;-1:-1:-1;521:1:34;558;521;545:5;521:1;545;:5;:::i;:::-;:9;;;;:::i;:::-;544:15;;;;:::i;:::-;540:19;;485:89;;;409:223;;;;594:6;;590:42;;-1:-1:-1;620:1:34;590:42;346:292;;;:::o;325:127:35:-;377:6;418:1;408:5;412:1;418;408:5;:::i;:::-;404:9;;;403:16;;395:50;;;;;;;;;;;;:::i;193:126::-;245:6;286:1;276:5;280:1;286;276:5;:::i;:::-;272:9;;;271:16;;263:49;;;;;;;;;;;;:::i;14:190:38:-;95:13;;148:30;137:42;;127:53;;117:2;;194:1;191;184:12;209:263;;332:2;320:9;311:7;307:23;303:32;300:2;;;353:6;345;338:22;300:2;390:9;384:16;409:33;436:5;409:33;:::i;:::-;461:5;290:182;-1:-1:-1;;;290:182:38:o;477:470::-;;;;623:2;611:9;602:7;598:23;594:32;591:2;;;644:6;636;629:22;591:2;688:9;675:23;707:33;734:5;707:33;:::i;:::-;759:5;-1:-1:-1;816:2:38;801:18;;788:32;829:35;788:32;829:35;:::i;:::-;581:366;;883:7;;-1:-1:-1;;;937:2:38;922:18;;;;909:32;;581:366::o;952:539::-;;;;;1115:3;1103:9;1094:7;1090:23;1086:33;1083:2;;;1137:6;1129;1122:22;1083:2;1181:9;1168:23;1200:33;1227:5;1200:33;:::i;:::-;1252:5;-1:-1:-1;1309:2:38;1294:18;;1281:32;1322:35;1281:32;1322:35;:::i;:::-;1073:418;;1376:7;;-1:-1:-1;;;;1430:2:38;1415:18;;1402:32;;1481:2;1466:18;1453:32;;1073:418::o;1496:608::-;;;;;;1676:3;1664:9;1655:7;1651:23;1647:33;1644:2;;;1698:6;1690;1683:22;1644:2;1742:9;1729:23;1761:33;1788:5;1761:33;:::i;:::-;1813:5;-1:-1:-1;1870:2:38;1855:18;;1842:32;1883:35;1842:32;1883:35;:::i;:::-;1634:470;;1937:7;;-1:-1:-1;;;;1991:2:38;1976:18;;1963:32;;2042:2;2027:18;;2014:32;;2093:3;2078:19;;;2065:33;;-1:-1:-1;1634:470:38:o;2109:474::-;;;;2265:2;2253:9;2244:7;2240:23;2236:32;2233:2;;;2286:6;2278;2271:22;2233:2;2314:42;2346:9;2314:42;:::i;:::-;2304:52;;2375:51;2422:2;2411:9;2407:18;2375:51;:::i;:::-;2365:61;;2469:2;2458:9;2454:18;2448:25;2513:10;2506:5;2502:22;2495:5;2492:33;2482:2;;2544:6;2536;2529:22;2482:2;2572:5;2562:15;;;2223:360;;;;;:::o;2588:194::-;;2711:2;2699:9;2690:7;2686:23;2682:32;2679:2;;;2732:6;2724;2717:22;2679:2;-1:-1:-1;2760:16:38;;2669:113;-1:-1:-1;2669:113:38:o;2787:368::-;2954:66;3049:2;3045:15;;;3041:24;;3029:37;;3100:15;;;;3096:24;3091:2;3082:12;;3075:46;3146:2;3137:12;;2934:221::o;3160:724::-;3531:66;3519:79;;3635:2;3631:15;;;;3648:66;3627:88;3623:1;3614:11;;3607:109;3741:2;3732:12;;3725:28;3783:66;3778:2;3769:12;;3762:88;3875:2;3866:12;;3509:375::o;3889:226::-;4065:42;4053:55;;;;4035:74;;4023:2;4008:18;;3990:125::o;4120:345::-;4322:2;4304:21;;;4361:2;4341:18;;;4334:30;4400:23;4395:2;4380:18;;4373:51;4456:2;4441:18;;4294:171::o;4470:344::-;4672:2;4654:21;;;4711:2;4691:18;;;4684:30;4750:22;4745:2;4730:18;;4723:50;4805:2;4790:18;;4644:170::o;4819:344::-;5021:2;5003:21;;;5060:2;5040:18;;;5033:30;5099:22;5094:2;5079:18;;5072:50;5154:2;5139:18;;4993:170::o;5168:407::-;5370:2;5352:21;;;5409:2;5389:18;;;5382:30;5448:34;5443:2;5428:18;;5421:62;5519:13;5514:2;5499:18;;5492:41;5565:3;5550:19;;5342:233::o;5580:405::-;5782:2;5764:21;;;5821:2;5801:18;;;5794:30;5860:34;5855:2;5840:18;;5833:62;5931:11;5926:2;5911:18;;5904:39;5975:3;5960:19;;5754:231::o;5990:399::-;6192:2;6174:21;;;6231:2;6211:18;;;6204:30;6270:34;6265:2;6250:18;;6243:62;6341:5;6336:2;6321:18;;6314:33;6379:3;6364:19;;6164:225::o;6394:402::-;6596:2;6578:21;;;6635:2;6615:18;;;6608:30;6674:34;6669:2;6654:18;;6647:62;6745:8;6740:2;6725:18;;6718:36;6786:3;6771:19;;6568:228::o;6801:403::-;7003:2;6985:21;;;7042:2;7022:18;;;7015:30;7081:34;7076:2;7061:18;;7054:62;7152:9;7147:2;7132:18;;7125:37;7194:3;7179:19;;6975:229::o;7209:352::-;7411:2;7393:21;;;7450:2;7430:18;;;7423:30;7489;7484:2;7469:18;;7462:58;7552:2;7537:18;;7383:178::o;7566:177::-;7712:25;;;7700:2;7685:18;;7667:76::o;7748:248::-;7922:25;;;7978:2;7963:18;;7956:34;7910:2;7895:18;;7877:119::o;8001:128::-;;8072:1;8068:6;8065:1;8062:13;8059:2;;;8078:18;;:::i;:::-;-1:-1:-1;8114:9:38;;8049:80::o;8134:274::-;;8200:1;8190:2;;8235:77;8232:1;8225:88;8336:4;8333:1;8326:15;8364:4;8361:1;8354:15;8190:2;-1:-1:-1;8393:9:38;;8180:228::o;8413:::-;;8579:1;8511:66;8507:74;8504:1;8501:81;8496:1;8489:9;8482:17;8478:105;8475:2;;;8586:18;;:::i;:::-;-1:-1:-1;8626:9:38;;8465:176::o;8646:125::-;;8714:1;8711;8708:8;8705:2;;;8719:18;;:::i;:::-;-1:-1:-1;8756:9:38;;8695:76::o;8776:184::-;8828:77;8825:1;8818:88;8925:4;8922:1;8915:15;8949:4;8946:1;8939:15;8965:156;9053:42;9046:5;9042:54;9035:5;9032:65;9022:2;;9111:1;9108;9101:12;9022:2;9012:109;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityAmount\",\"type\":\"uint256\"}],\"name\":\"getGasCostOfGetLiquidityValueAfterArbitrageToPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityAmount\",\"type\":\"uint256\"}],\"name\":\"getLiquidityValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityAmount\",\"type\":\"uint256\"}],\"name\":\"getLiquidityValueAfterArbitrageToPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenB\",\"type\":\"uint256\"}],\"name\":\"getReservesAfterArbitrage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/examples/ExampleComputeLiquidityValue.sol\":\"ExampleComputeLiquidityValue\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/examples/ExampleComputeLiquidityValue.sol\":{\"keccak256\":\"0xb689faf17113dba152230713291e1fd1d782d230171bc2564ab5adf965929109\",\"urls\":[\"bzz-raw://3ac5d21ddd70241036ceb64bf725340eac8d24cc5fa22e9e569eb50e49109daf\",\"dweb:/ipfs/QmNwB4FXci6rphNhPpbfcaazu54V7kNbSKv5CHTf4yJHxy\"]},\"contracts/interfaces/IMateriaFactory.sol\":{\"keccak256\":\"0xbb23d0937dd4e8da3b15e4e461603554abc9945d40b713f5f8f6e612d7e36dae\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://1cc856dd3375c7c345c693edda94b27d5c03d666843989308d6e61ef786b3718\",\"dweb:/ipfs/QmZaq9Vec3gVXNFoaWX56B2DQPYjpiDahdEoqogskHiJAp\"]},\"contracts/interfaces/IMateriaPair.sol\":{\"keccak256\":\"0x9bebb503cf622a7e7328ff812b8817e1d3b22e273d345083118e92522b810693\",\"urls\":[\"bzz-raw://a0b3308a2e9f28a85ec586372329792eaf32562c7293af0657ef03f8d04bc7f9\",\"dweb:/ipfs/QmegwdpH1wYAUtTwKu1yUiekj13CB251znNc4Kb2Jf5b2L\"]},\"contracts/libraries/MateriaLibrary.sol\":{\"keccak256\":\"0x84b8cdd67ecab6d9bd442140670a16c4608fefdcaa702c25339a89b0527381c6\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://f2ce38a46f0ddc6b043ba9e91590f482553fc96c7bec769825d36089f6d08887\",\"dweb:/ipfs/QmXVp7AwoHFm4whU26XE9kvaYmfb4QyXrzsqaEGXvgybFN\"]},\"contracts/libraries/MateriaLiquidityMathLibrary.sol\":{\"keccak256\":\"0x138eda0b6b2fcd13896f36df95fabfba41993ed795390821bf122627f72d88d3\",\"urls\":[\"bzz-raw://82d6d09dd40daeb1753dcaea811bf07915c5ee54eaf8b8c4b025d7216eae46ba\",\"dweb:/ipfs/QmUCp5AjamJqu6cJdGnfwG2m27UfMtaAe67ksroFknrNcJ\"]},\"contracts/libraries/Math.sol\":{\"keccak256\":\"0x8d2aa0782d2018f23f4dde78b89f561c377dbb9bbcc877da7c2bb5e5f95e1502\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c62a2dbd0f790792855815f1ff2d39fea43b1bc9a29b7e60407afb7fc1ba1bf0\",\"dweb:/ipfs/QmYDAf4QU6xL9FDBKzkjVmoXxUhx3R4FBTnA9hxjJE9mxk\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xe04b4ed1aab8779734d012e907f742e8b6e8ad539c01d5466b9eb58752fdc514\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://667941f2ea3584629681a303e988ffcbc33a2e8313f4658ad8700b2209b3ea4d\",\"dweb:/ipfs/QmafqLrntkf6gRyhAHt4wYojdHwuZXeD8gcE7FJWW6rKWm\"]}},\"version\":1}",
      "bytecode": "60a060405234801561001057600080fd5b506040516114bf3803806114bf83398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c6114146100ab6000396000818160f9015281816101370152818161017a015281816101c201526101ec01526114146000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806380caa3531161005057806380caa353146100a9578063c45a0155146100c9578063d9b7a6e7146100de57610067565b80633558e94c1461006c57806369a2fcbd14610096575b600080fd5b61007f61007a366004610e4a565b6100f1565b60405161008d9291906112d7565b60405180910390f35b61007f6100a4366004610e8f565b61012f565b6100bc6100b7366004610e8f565b61016f565b60405161008d91906112ce565b6100d16101c0565b60405161008d9190611000565b61007f6100ec366004610e0a565b6101e4565b6000806101217f00000000000000000000000000000000000000000000000000000000000000008787878761021f565b915091505b94509492505050565b6000806101607f0000000000000000000000000000000000000000000000000000000000000000888888888861030b565b915091505b9550959350505050565b6000805a90506101a37f0000000000000000000000000000000000000000000000000000000000000000888888888861030b565b505060005a90506101b48183611373565b98975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102137f000000000000000000000000000000000000000000000000000000000000000086868661055b565b91509150935093915050565b60008061022d878787610761565b909250905081158015906102415750600081115b610280576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610277906110c6565b60405180910390fd5b60008061028f8686868661086f565b9150915080600014156102a3575050610165565b81156102d65760006102b682868661094b565b90506102c282866112e5565b94506102ce8185611373565b9350506102ff565b60006102e382858761094b565b90506102ef82856112e5565b93506102fb8186611373565b9450505b50509550959350505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561036d57600080fd5b505afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610de7565b73ffffffffffffffffffffffffffffffffffffffff161415905060006103cc8a8a8a610a19565b90506000826103dc57600061045a565b8173ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042257600080fd5b505afa158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610f2d565b905060008273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104a457600080fd5b505afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc9190610f2d565b90508681101580156104ee5750600087115b610524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102779061123a565b6000806105348e8e8e8e8e61021f565b915091506105468282858c8a89610aa7565b97509750505050505050965096945050505050565b60008060008061056c888888610761565b91509150600061057d898989610a19565b905060008073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156105de57600080fd5b505afa1580156105f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106169190610de7565b73ffffffffffffffffffffffffffffffffffffffff161415905060008161063e5760006106bc565b8273ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068457600080fd5b505afa158015610698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bc9190610f2d565b905060008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561070657600080fd5b505afa15801561071a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073e9190610f2d565b905061074e8686838c8787610aa7565b9750975050505050505094509492505050565b60008060006107708585610b6a565b509050600080610781888888610a19565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156107c657600080fd5b505afa1580156107da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fe9190610edf565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461085d578082610860565b81815b90999098509650505050505050565b600080858361087e8688610c69565b61088891906112fd565b10915060006108978585610c69565b905060006108e76108b76103e5866108af578a6108b1565b895b90610c69565b6108d86108c6856103e8610c69565b876108d1578a6108d3565b8b5b610c69565b6108e291906112fd565b610cc9565b905060006103e585610904576108ff876103e8610c69565b610910565b610910886103e8610c69565b61091a91906112fd565b9050808210156109335760008094509450505050610126565b61093d8282610d39565b935050505094509492505050565b6000808411610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611123565b6000831180156109965750600082115b6109cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610277906111dd565b60006109da856103e5610c69565b905060006109e88285610c69565b90506000610a02836109fc886103e8610c69565b90610d81565b9050610a0e81836112fd565b979650505050505050565b6000806000610a288585610b6a565b91509150858282604051602001610a40929190610f45565b60405160208183030381529060405280519060200120604051602001610a67929190610f7f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b600080838015610ab75750600083115b15610b31576000610acb6108e28a8a610c69565b90506000610ad885610cc9565b905080821115610b2e57876000610aef8484610d39565b90506000610b02846109fc876005610c69565b9050600081610b118585610c69565b610b1b91906112fd565b9050610b278c82610d81565b9b50505050505b50505b85610b3c8987610c69565b610b4691906112fd565b86610b518988610c69565b610b5b91906112fd565b91509150965096945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611180565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610c0d578284610c10565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610c62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611297565b9250929050565b6000811580610c8d57508282610c7f8183611336565b9250610c8b90836112fd565b145b610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611058565b92915050565b60006003821115610d2a5750806000610ce36002836112fd565b610cee9060016112e5565b90505b81811015610d2457905080600281610d0981866112fd565b610d1391906112e5565b610d1d91906112fd565b9050610cf1565b50610d34565b8115610d34575060015b919050565b600082610d468382611373565b9150811115610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611021565b600082610d8e83826112e5565b9150811015610cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102779061108f565b80516dffffffffffffffffffffffffffff81168114610d3457600080fd5b600060208284031215610df8578081fd5b8151610e03816113b9565b9392505050565b600080600060608486031215610e1e578182fd5b8335610e29816113b9565b92506020840135610e39816113b9565b929592945050506040919091013590565b60008060008060808587031215610e5f578081fd5b8435610e6a816113b9565b93506020850135610e7a816113b9565b93969395505050506040820135916060013590565b600080600080600060a08688031215610ea6578081fd5b8535610eb1816113b9565b94506020860135610ec1816113b9565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215610ef3578283fd5b610efc84610dc9565b9250610f0a60208501610dc9565b9150604084015163ffffffff81168114610f22578182fd5b809150509250925092565b600060208284031215610f3e578081fd5b5051919050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252602b908201527f4d6174657269614172626974726167654c6962726172793a205a45524f5f504160408201527f49525f5245534552564553000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526027908201527f436f6d707574654c697175696469747956616c75653a204c495155494449545960408201527f5f414d4f554e5400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b600082198211156112f8576112f861138a565b500190565b600082611331577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561136e5761136e61138a565b500290565b6000828210156113855761138561138a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146113db57600080fd5b5056fea2646970667358221220579dfe9cfd1449f3d03f1178e62850a8cbf4a3e9703a02341ecef1ed9bd86efd64736f6c63430008000033",
      "bin": "60a060405234801561001057600080fd5b506040516114bf3803806114bf83398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c6114146100ab6000396000818160f9015281816101370152818161017a015281816101c201526101ec01526114146000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806380caa3531161005057806380caa353146100a9578063c45a0155146100c9578063d9b7a6e7146100de57610067565b80633558e94c1461006c57806369a2fcbd14610096575b600080fd5b61007f61007a366004610e4a565b6100f1565b60405161008d9291906112d7565b60405180910390f35b61007f6100a4366004610e8f565b61012f565b6100bc6100b7366004610e8f565b61016f565b60405161008d91906112ce565b6100d16101c0565b60405161008d9190611000565b61007f6100ec366004610e0a565b6101e4565b6000806101217f00000000000000000000000000000000000000000000000000000000000000008787878761021f565b915091505b94509492505050565b6000806101607f0000000000000000000000000000000000000000000000000000000000000000888888888861030b565b915091505b9550959350505050565b6000805a90506101a37f0000000000000000000000000000000000000000000000000000000000000000888888888861030b565b505060005a90506101b48183611373565b98975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102137f000000000000000000000000000000000000000000000000000000000000000086868661055b565b91509150935093915050565b60008061022d878787610761565b909250905081158015906102415750600081115b610280576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610277906110c6565b60405180910390fd5b60008061028f8686868661086f565b9150915080600014156102a3575050610165565b81156102d65760006102b682868661094b565b90506102c282866112e5565b94506102ce8185611373565b9350506102ff565b60006102e382858761094b565b90506102ef82856112e5565b93506102fb8186611373565b9450505b50509550959350505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561036d57600080fd5b505afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610de7565b73ffffffffffffffffffffffffffffffffffffffff161415905060006103cc8a8a8a610a19565b90506000826103dc57600061045a565b8173ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042257600080fd5b505afa158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610f2d565b905060008273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104a457600080fd5b505afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc9190610f2d565b90508681101580156104ee5750600087115b610524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102779061123a565b6000806105348e8e8e8e8e61021f565b915091506105468282858c8a89610aa7565b97509750505050505050965096945050505050565b60008060008061056c888888610761565b91509150600061057d898989610a19565b905060008073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156105de57600080fd5b505afa1580156105f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106169190610de7565b73ffffffffffffffffffffffffffffffffffffffff161415905060008161063e5760006106bc565b8273ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068457600080fd5b505afa158015610698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bc9190610f2d565b905060008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561070657600080fd5b505afa15801561071a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073e9190610f2d565b905061074e8686838c8787610aa7565b9750975050505050505094509492505050565b60008060006107708585610b6a565b509050600080610781888888610a19565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156107c657600080fd5b505afa1580156107da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fe9190610edf565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461085d578082610860565b81815b90999098509650505050505050565b600080858361087e8688610c69565b61088891906112fd565b10915060006108978585610c69565b905060006108e76108b76103e5866108af578a6108b1565b895b90610c69565b6108d86108c6856103e8610c69565b876108d1578a6108d3565b8b5b610c69565b6108e291906112fd565b610cc9565b905060006103e585610904576108ff876103e8610c69565b610910565b610910886103e8610c69565b61091a91906112fd565b9050808210156109335760008094509450505050610126565b61093d8282610d39565b935050505094509492505050565b6000808411610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611123565b6000831180156109965750600082115b6109cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610277906111dd565b60006109da856103e5610c69565b905060006109e88285610c69565b90506000610a02836109fc886103e8610c69565b90610d81565b9050610a0e81836112fd565b979650505050505050565b6000806000610a288585610b6a565b91509150858282604051602001610a40929190610f45565b60405160208183030381529060405280519060200120604051602001610a67929190610f7f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b600080838015610ab75750600083115b15610b31576000610acb6108e28a8a610c69565b90506000610ad885610cc9565b905080821115610b2e57876000610aef8484610d39565b90506000610b02846109fc876005610c69565b9050600081610b118585610c69565b610b1b91906112fd565b9050610b278c82610d81565b9b50505050505b50505b85610b3c8987610c69565b610b4691906112fd565b86610b518988610c69565b610b5b91906112fd565b91509150965096945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611180565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610c0d578284610c10565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610c62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611297565b9250929050565b6000811580610c8d57508282610c7f8183611336565b9250610c8b90836112fd565b145b610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611058565b92915050565b60006003821115610d2a5750806000610ce36002836112fd565b610cee9060016112e5565b90505b81811015610d2457905080600281610d0981866112fd565b610d1391906112e5565b610d1d91906112fd565b9050610cf1565b50610d34565b8115610d34575060015b919050565b600082610d468382611373565b9150811115610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611021565b600082610d8e83826112e5565b9150811015610cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102779061108f565b80516dffffffffffffffffffffffffffff81168114610d3457600080fd5b600060208284031215610df8578081fd5b8151610e03816113b9565b9392505050565b600080600060608486031215610e1e578182fd5b8335610e29816113b9565b92506020840135610e39816113b9565b929592945050506040919091013590565b60008060008060808587031215610e5f578081fd5b8435610e6a816113b9565b93506020850135610e7a816113b9565b93969395505050506040820135916060013590565b600080600080600060a08688031215610ea6578081fd5b8535610eb1816113b9565b94506020860135610ec1816113b9565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215610ef3578283fd5b610efc84610dc9565b9250610f0a60208501610dc9565b9150604084015163ffffffff81168114610f22578182fd5b809150509250925092565b600060208284031215610f3e578081fd5b5051919050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252602b908201527f4d6174657269614172626974726167654c6962726172793a205a45524f5f504160408201527f49525f5245534552564553000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526027908201527f436f6d707574654c697175696469747956616c75653a204c495155494449545960408201527f5f414d4f554e5400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b600082198211156112f8576112f861138a565b500190565b600082611331577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561136e5761136e61138a565b500290565b6000828210156113855761138561138a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146113db57600080fd5b5056fea2646970667358221220579dfe9cfd1449f3d03f1178e62850a8cbf4a3e9703a02341ecef1ed9bd86efd64736f6c63430008000033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100675760003560e01c806380caa3531161005057806380caa353146100a9578063c45a0155146100c9578063d9b7a6e7146100de57610067565b80633558e94c1461006c57806369a2fcbd14610096575b600080fd5b61007f61007a366004610e4a565b6100f1565b60405161008d9291906112d7565b60405180910390f35b61007f6100a4366004610e8f565b61012f565b6100bc6100b7366004610e8f565b61016f565b60405161008d91906112ce565b6100d16101c0565b60405161008d9190611000565b61007f6100ec366004610e0a565b6101e4565b6000806101217f00000000000000000000000000000000000000000000000000000000000000008787878761021f565b915091505b94509492505050565b6000806101607f0000000000000000000000000000000000000000000000000000000000000000888888888861030b565b915091505b9550959350505050565b6000805a90506101a37f0000000000000000000000000000000000000000000000000000000000000000888888888861030b565b505060005a90506101b48183611373565b98975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102137f000000000000000000000000000000000000000000000000000000000000000086868661055b565b91509150935093915050565b60008061022d878787610761565b909250905081158015906102415750600081115b610280576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610277906110c6565b60405180910390fd5b60008061028f8686868661086f565b9150915080600014156102a3575050610165565b81156102d65760006102b682868661094b565b90506102c282866112e5565b94506102ce8185611373565b9350506102ff565b60006102e382858761094b565b90506102ef82856112e5565b93506102fb8186611373565b9450505b50509550959350505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561036d57600080fd5b505afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610de7565b73ffffffffffffffffffffffffffffffffffffffff161415905060006103cc8a8a8a610a19565b90506000826103dc57600061045a565b8173ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042257600080fd5b505afa158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610f2d565b905060008273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104a457600080fd5b505afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc9190610f2d565b90508681101580156104ee5750600087115b610524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102779061123a565b6000806105348e8e8e8e8e61021f565b915091506105468282858c8a89610aa7565b97509750505050505050965096945050505050565b60008060008061056c888888610761565b91509150600061057d898989610a19565b905060008073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156105de57600080fd5b505afa1580156105f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106169190610de7565b73ffffffffffffffffffffffffffffffffffffffff161415905060008161063e5760006106bc565b8273ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068457600080fd5b505afa158015610698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bc9190610f2d565b905060008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561070657600080fd5b505afa15801561071a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073e9190610f2d565b905061074e8686838c8787610aa7565b9750975050505050505094509492505050565b60008060006107708585610b6a565b509050600080610781888888610a19565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156107c657600080fd5b505afa1580156107da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fe9190610edf565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461085d578082610860565b81815b90999098509650505050505050565b600080858361087e8688610c69565b61088891906112fd565b10915060006108978585610c69565b905060006108e76108b76103e5866108af578a6108b1565b895b90610c69565b6108d86108c6856103e8610c69565b876108d1578a6108d3565b8b5b610c69565b6108e291906112fd565b610cc9565b905060006103e585610904576108ff876103e8610c69565b610910565b610910886103e8610c69565b61091a91906112fd565b9050808210156109335760008094509450505050610126565b61093d8282610d39565b935050505094509492505050565b6000808411610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611123565b6000831180156109965750600082115b6109cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610277906111dd565b60006109da856103e5610c69565b905060006109e88285610c69565b90506000610a02836109fc886103e8610c69565b90610d81565b9050610a0e81836112fd565b979650505050505050565b6000806000610a288585610b6a565b91509150858282604051602001610a40929190610f45565b60405160208183030381529060405280519060200120604051602001610a67929190610f7f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b600080838015610ab75750600083115b15610b31576000610acb6108e28a8a610c69565b90506000610ad885610cc9565b905080821115610b2e57876000610aef8484610d39565b90506000610b02846109fc876005610c69565b9050600081610b118585610c69565b610b1b91906112fd565b9050610b278c82610d81565b9b50505050505b50505b85610b3c8987610c69565b610b4691906112fd565b86610b518988610c69565b610b5b91906112fd565b91509150965096945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611180565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610c0d578284610c10565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610c62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611297565b9250929050565b6000811580610c8d57508282610c7f8183611336565b9250610c8b90836112fd565b145b610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611058565b92915050565b60006003821115610d2a5750806000610ce36002836112fd565b610cee9060016112e5565b90505b81811015610d2457905080600281610d0981866112fd565b610d1391906112e5565b610d1d91906112fd565b9050610cf1565b50610d34565b8115610d34575060015b919050565b600082610d468382611373565b9150811115610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027790611021565b600082610d8e83826112e5565b9150811015610cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102779061108f565b80516dffffffffffffffffffffffffffff81168114610d3457600080fd5b600060208284031215610df8578081fd5b8151610e03816113b9565b9392505050565b600080600060608486031215610e1e578182fd5b8335610e29816113b9565b92506020840135610e39816113b9565b929592945050506040919091013590565b60008060008060808587031215610e5f578081fd5b8435610e6a816113b9565b93506020850135610e7a816113b9565b93969395505050506040820135916060013590565b600080600080600060a08688031215610ea6578081fd5b8535610eb1816113b9565b94506020860135610ec1816113b9565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215610ef3578283fd5b610efc84610dc9565b9250610f0a60208501610dc9565b9150604084015163ffffffff81168114610f22578182fd5b809150509250925092565b600060208284031215610f3e578081fd5b5051919050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252602b908201527f4d6174657269614172626974726167654c6962726172793a205a45524f5f504160408201527f49525f5245534552564553000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f494e5060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4d6174657269614c6962726172793a20494e53554646494349454e545f4c495160408201527f5549444954590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526027908201527f436f6d707574654c697175696469747956616c75653a204c495155494449545960408201527f5f414d4f554e5400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b90815260200190565b918252602082015260400190565b600082198211156112f8576112f861138a565b500190565b600082611331577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561136e5761136e61138a565b500290565b6000828210156113855761138561138a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146113db57600080fd5b5056fea2646970667358221220579dfe9cfd1449f3d03f1178e62850a8cbf4a3e9703a02341ecef1ed9bd86efd64736f6c63430008000033",
      "srcmap": "81:2419:5:-:0;;;197:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;244:18;;-1:-1:-1;;;;;;244:18:5;;;81:2419;;14:310:38;;137:2;125:9;116:7;112:23;108:32;105:2;;;158:6;150;143:22;105:2;189:16;;-1:-1:-1;;;;;234:31:38;;224:42;;214:2;;285:6;277;270:22;214:2;313:5;95:229;-1:-1:-1;;;95:229:38:o;:::-;81:2419:5;;;;;;;;;;;;",
      "srcmap-runtime": "81:2419:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;340:420;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1279:538;;;;;;:::i;:::-;;:::i;1890:608::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;158:32::-;;;:::i;:::-;;;;;;;:::i;823:372::-;;;;;;:::i;:::-;;:::i;340:420::-;518:16;536;571:182;638:7;659:6;679;699:15;728;571:53;:182::i;:::-;564:189;;;;340:420;;;;;;;;:::o;1279:538::-;1512:20;1542;1586:224;1666:7;1687:6;1707;1727:15;1756;1785;1586:66;:224::i;:::-;1579:231;;;;1279:538;;;;;;;;;:::o;1890:608::-;2135:7;2159:14;2176:9;2159:26;;2195:224;2275:7;2296:6;2316;2336:15;2365;2394;2195:66;:224::i;:::-;;;2429:13;2445:9;2429:25;-1:-1:-1;2471:20:5;2429:25;2471:9;:20;:::i;:::-;2464:27;1890:608;-1:-1:-1;;;;;;;;1890:608:5:o;158:32::-;;;:::o;823:372::-;969:20;999;1043:145;1102:7;1123:6;1143;1163:15;1043:45;:145::i;:::-;1036:152;;;;823:372;;;;;;:::o;1515:1153:33:-;1718:16;1736;1833:51;1860:7;1869:6;1877;1833:26;:51::i;:::-;1810:74;;-1:-1:-1;1810:74:33;-1:-1:-1;1903:12:33;;;;;:28;;;1930:1;1919:8;:12;1903:28;1895:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;2057:9;2068:16;2088:82;2117:15;2134;2151:8;2161;2088:28;:82::i;:::-;2056:114;;;;2185:8;2197:1;2185:13;2181:71;;;2214:27;;;;2181:71;2314:4;2310:352;;;2334:14;2351:57;2379:8;2389;2399;2351:27;:57::i;:::-;2334:74;-1:-1:-1;2422:20:33;2434:8;2422:20;;:::i;:::-;;-1:-1:-1;2456:21:33;2468:9;2456:21;;:::i;:::-;;;2310:352;;;;2508:14;2525:57;2553:8;2563;2573;2525:27;:57::i;:::-;2508:74;-1:-1:-1;2596:20:33;2608:8;2596:20;;:::i;:::-;;-1:-1:-1;2630:21:33;2642:9;2630:21;;:::i;:::-;;;2310:352;;1515:1153;;;;;;;;;;:::o;4799:976::-;5057:20;5087;5124:10;5181:1;5137:46;;5153:7;5137:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;5124:59;;5193:17;5226:47;5249:7;5258:6;5266;5226:22;:47::i;:::-;5193:81;;5284:10;5297:5;:24;;5320:1;5297:24;;;5305:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5284:37;;5331:16;5350:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5331:37;;5451:15;5436:11;:30;;:53;;;;;5488:1;5470:15;:19;5436:53;5428:105;;;;;;;;;;;;:::i;:::-;5545:14;5561;5579:84;5605:7;5614:6;5622;5630:15;5647;5579:25;:84::i;:::-;5544:119;;;;5681:87;5703:9;5714;5725:11;5738:15;5755:5;5762;5681:21;:87::i;:::-;5674:94;;;;;;;;;;4799:976;;;;;;;;;:::o;3900:673::-;4062:20;4084;4117:17;4136;4157:51;4184:7;4193:6;4201;4157:26;:51::i;:::-;4116:92;;;;4218:17;4251:47;4274:7;4283:6;4291;4251:22;:47::i;:::-;4218:81;;4309:10;4366:1;4322:46;;4338:7;4322:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;4309:59;;4378:10;4391:5;:24;;4414:1;4391:24;;;4399:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4378:37;;4425:16;4444:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4425:37;;4479:87;4501:9;4512;4523:11;4536:15;4553:5;4560;4479:21;:87::i;:::-;4472:94;;;;;;;;;;3900:673;;;;;;;:::o;1527:429:32:-;1650:16;1668;1697:14;1717:26;1728:6;1736;1717:10;:26::i;:::-;1696:47;;;1754:16;1772;1807:32;1815:7;1824:6;1832;1807:7;:32::i;:::-;1794:58;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1753:101;;;;;;;;;1897:6;1887:16;;:6;:16;;;:62;;1930:8;1940;1887:62;;;1907:8;1917;1887:62;1864:85;;;;-1:-1:-1;1527:429:32;-1:-1:-1;;;;;;;1527:429:32:o;488:890:33:-;673:9;684:16;770:15;759:8;719:39;732:8;742:15;719:12;:39::i;:::-;:48;;;;:::i;:::-;:66;;-1:-1:-1;796:17:33;816:22;:8;829;816:12;:22::i;:::-;796:42;;849:16;868:223;1017:51;1064:3;1018:4;:40;;1043:15;1018:40;;;1025:15;1018:40;1017:46;;:51::i;:::-;891:108;921:19;:9;935:4;921:13;:19::i;:::-;958:4;:40;;983:15;958:40;;;965:15;958:40;891:12;:108::i;:::-;:177;;;;:::i;:::-;868:9;:223::i;:::-;849:242;;1101:17;1172:3;1122:4;:46;;1150:18;:8;1163:4;1150:12;:18::i;:::-;1122:46;;;1129:18;:8;1142:4;1129:12;:18::i;:::-;1121:54;;;;:::i;:::-;1101:74;;1201:9;1190:8;:20;1186:43;;;1220:5;1227:1;1212:17;;;;;;;;;1186:43;1348:23;:8;1361:9;1348:12;:23::i;:::-;1337:34;;488:890;;;;;;;;;;:::o;2540:557:32:-;2672:17;2720:1;2709:8;:12;2701:66;;;;;;;;;;;;:::i;:::-;2797:1;2785:9;:13;:31;;;;;2815:1;2802:10;:14;2785:31;2777:82;;;;;;;;;;;;:::i;:::-;2869:23;2895:17;:8;2908:3;2895:12;:17::i;:::-;2869:43;-1:-1:-1;2922:17:32;2942:31;2869:43;2962:10;2942:19;:31::i;:::-;2922:51;-1:-1:-1;2983:19:32;3005:40;3029:15;3005:19;:9;3019:4;3005:13;:19::i;:::-;:23;;:40::i;:::-;2983:62;-1:-1:-1;3067:23:32;2983:62;3067:9;:23;:::i;:::-;3055:35;2540:557;-1:-1:-1;;;;;;;2540:557:32:o;764:708::-;883:12;908:14;924;942:26;953:6;961;942:10;:26::i;:::-;907:61;;;;1178:7;1242:6;1250;1225:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1215:43;;;;;;1095:306;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1060:363;;1095:306;1060:363;;;;;764:708;-1:-1:-1;;;;;;764:708:32:o;2743:895:33:-;2959:20;2981;3017:5;:18;;;;;3034:1;3026:5;:9;3017:18;3013:510;;;3051:10;3064:35;3074:24;:9;3088;3074:13;:24::i;3064:35::-;3051:48;;3113:14;3130:16;3140:5;3130:9;:16::i;:::-;3113:33;;3172:9;3164:5;:17;3160:353;;;3219:11;3201:15;3266:20;:5;3276:9;3266;:20::i;:::-;3248:38;-1:-1:-1;3304:16:33;3323:27;3340:9;3323:12;:5;3333:1;3323:9;:12::i;:27::-;3304:46;;3368:17;3426:11;3388:36;3401:10;3413;3388:12;:36::i;:::-;:49;;;;:::i;:::-;3368:69;-1:-1:-1;3469:29:33;:11;3368:69;3469:15;:29::i;:::-;3455:43;;3160:353;;;;;3013:510;;;3573:11;3540:30;:9;3554:15;3540:13;:30::i;:::-;:44;;;;:::i;:::-;3619:11;3586:30;:9;3600:15;3586:13;:30::i;:::-;:44;;;;:::i;:::-;3532:99;;;;2743:895;;;;;;;;;:::o;334:341:32:-;409:14;425;469:6;459:16;;:6;:16;;;;451:64;;;;;;;;;;;;:::i;:::-;553:6;544:15;;:6;:15;;;:53;;582:6;590;544:53;;;563:6;571;544:53;525:72;;-1:-1:-1;525:72:32;-1:-1:-1;615:20:32;;;607:61;;;;;;;;;;;;:::i;:::-;334:341;;;;;:::o;458:140:35:-;510:6;536;;;:30;;-1:-1:-1;565:1:35;560;551:5;560:1;565;551:5;:::i;:::-;547:9;-1:-1:-1;546:15:35;;547:9;546:15;:::i;:::-;:20;536:30;528:63;;;;;;;;;;;;:::i;:::-;458:140;;;;:::o;346:292:34:-;391:6;417:1;413;:5;409:223;;;-1:-1:-1;438:1:34;453:6;462:5;466:1;438;462:5;:::i;:::-;:9;;470:1;462:9;:::i;:::-;453:18;;485:89;496:1;492;:5;485:89;;;521:1;-1:-1:-1;521:1:34;558;521;545:5;521:1;545;:5;:::i;:::-;:9;;;;:::i;:::-;544:15;;;;:::i;:::-;540:19;;485:89;;;409:223;;;;594:6;;590:42;;-1:-1:-1;620:1:34;590:42;346:292;;;:::o;325:127:35:-;377:6;418:1;408:5;412:1;418;408:5;:::i;:::-;404:9;;;403:16;;395:50;;;;;;;;;;;;:::i;193:126::-;245:6;286:1;276:5;280:1;286;276:5;:::i;:::-;272:9;;;271:16;;263:49;;;;;;;;;;;;:::i;14:190:38:-;95:13;;148:30;137:42;;127:53;;117:2;;194:1;191;184:12;209:263;;332:2;320:9;311:7;307:23;303:32;300:2;;;353:6;345;338:22;300:2;390:9;384:16;409:33;436:5;409:33;:::i;:::-;461:5;290:182;-1:-1:-1;;;290:182:38:o;477:470::-;;;;623:2;611:9;602:7;598:23;594:32;591:2;;;644:6;636;629:22;591:2;688:9;675:23;707:33;734:5;707:33;:::i;:::-;759:5;-1:-1:-1;816:2:38;801:18;;788:32;829:35;788:32;829:35;:::i;:::-;581:366;;883:7;;-1:-1:-1;;;937:2:38;922:18;;;;909:32;;581:366::o;952:539::-;;;;;1115:3;1103:9;1094:7;1090:23;1086:33;1083:2;;;1137:6;1129;1122:22;1083:2;1181:9;1168:23;1200:33;1227:5;1200:33;:::i;:::-;1252:5;-1:-1:-1;1309:2:38;1294:18;;1281:32;1322:35;1281:32;1322:35;:::i;:::-;1073:418;;1376:7;;-1:-1:-1;;;;1430:2:38;1415:18;;1402:32;;1481:2;1466:18;1453:32;;1073:418::o;1496:608::-;;;;;;1676:3;1664:9;1655:7;1651:23;1647:33;1644:2;;;1698:6;1690;1683:22;1644:2;1742:9;1729:23;1761:33;1788:5;1761:33;:::i;:::-;1813:5;-1:-1:-1;1870:2:38;1855:18;;1842:32;1883:35;1842:32;1883:35;:::i;:::-;1634:470;;1937:7;;-1:-1:-1;;;;1991:2:38;1976:18;;1963:32;;2042:2;2027:18;;2014:32;;2093:3;2078:19;;;2065:33;;-1:-1:-1;1634:470:38:o;2109:474::-;;;;2265:2;2253:9;2244:7;2240:23;2236:32;2233:2;;;2286:6;2278;2271:22;2233:2;2314:42;2346:9;2314:42;:::i;:::-;2304:52;;2375:51;2422:2;2411:9;2407:18;2375:51;:::i;:::-;2365:61;;2469:2;2458:9;2454:18;2448:25;2513:10;2506:5;2502:22;2495:5;2492:33;2482:2;;2544:6;2536;2529:22;2482:2;2572:5;2562:15;;;2223:360;;;;;:::o;2588:194::-;;2711:2;2699:9;2690:7;2686:23;2682:32;2679:2;;;2732:6;2724;2717:22;2679:2;-1:-1:-1;2760:16:38;;2669:113;-1:-1:-1;2669:113:38:o;2787:368::-;2954:66;3049:2;3045:15;;;3041:24;;3029:37;;3100:15;;;;3096:24;3091:2;3082:12;;3075:46;3146:2;3137:12;;2934:221::o;3160:724::-;3531:66;3519:79;;3635:2;3631:15;;;;3648:66;3627:88;3623:1;3614:11;;3607:109;3741:2;3732:12;;3725:28;3783:66;3778:2;3769:12;;3762:88;3875:2;3866:12;;3509:375::o;3889:226::-;4065:42;4053:55;;;;4035:74;;4023:2;4008:18;;3990:125::o;4120:345::-;4322:2;4304:21;;;4361:2;4341:18;;;4334:30;4400:23;4395:2;4380:18;;4373:51;4456:2;4441:18;;4294:171::o;4470:344::-;4672:2;4654:21;;;4711:2;4691:18;;;4684:30;4750:22;4745:2;4730:18;;4723:50;4805:2;4790:18;;4644:170::o;4819:344::-;5021:2;5003:21;;;5060:2;5040:18;;;5033:30;5099:22;5094:2;5079:18;;5072:50;5154:2;5139:18;;4993:170::o;5168:407::-;5370:2;5352:21;;;5409:2;5389:18;;;5382:30;5448:34;5443:2;5428:18;;5421:62;5519:13;5514:2;5499:18;;5492:41;5565:3;5550:19;;5342:233::o;5580:405::-;5782:2;5764:21;;;5821:2;5801:18;;;5794:30;5860:34;5855:2;5840:18;;5833:62;5931:11;5926:2;5911:18;;5904:39;5975:3;5960:19;;5754:231::o;5990:399::-;6192:2;6174:21;;;6231:2;6211:18;;;6204:30;6270:34;6265:2;6250:18;;6243:62;6341:5;6336:2;6321:18;;6314:33;6379:3;6364:19;;6164:225::o;6394:402::-;6596:2;6578:21;;;6635:2;6615:18;;;6608:30;6674:34;6669:2;6654:18;;6647:62;6745:8;6740:2;6725:18;;6718:36;6786:3;6771:19;;6568:228::o;6801:403::-;7003:2;6985:21;;;7042:2;7022:18;;;7015:30;7081:34;7076:2;7061:18;;7054:62;7152:9;7147:2;7132:18;;7125:37;7194:3;7179:19;;6975:229::o;7209:352::-;7411:2;7393:21;;;7450:2;7430:18;;;7423:30;7489;7484:2;7469:18;;7462:58;7552:2;7537:18;;7383:178::o;7566:177::-;7712:25;;;7700:2;7685:18;;7667:76::o;7748:248::-;7922:25;;;7978:2;7963:18;;7956:34;7910:2;7895:18;;7877:119::o;8001:128::-;;8072:1;8068:6;8065:1;8062:13;8059:2;;;8078:18;;:::i;:::-;-1:-1:-1;8114:9:38;;8049:80::o;8134:274::-;;8200:1;8190:2;;8235:77;8232:1;8225:88;8336:4;8333:1;8326:15;8364:4;8361:1;8354:15;8190:2;-1:-1:-1;8393:9:38;;8180:228::o;8413:::-;;8579:1;8511:66;8507:74;8504:1;8501:81;8496:1;8489:9;8482:17;8478:105;8475:2;;;8586:18;;:::i;:::-;-1:-1:-1;8626:9:38;;8465:176::o;8646:125::-;;8714:1;8711;8708:8;8705:2;;;8719:18;;:::i;:::-;-1:-1:-1;8756:9:38;;8695:76::o;8776:184::-;8828:77;8825:1;8818:88;8925:4;8922:1;8915:15;8949:4;8946:1;8939:15;8965:156;9053:42;9046:5;9042:54;9035:5;9032:65;9022:2;;9111:1;9108;9101:12;9022:2;9012:109;:::o"
    },
    "contracts/examples/ExampleSwapToPrice.sol:ExampleSwapToPrice": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "factory_",
              "type": "address"
            },
            {
              "internalType": "contract IMateriaOrchestrator",
              "name": "orchestrator_",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "orchestrator",
          "outputs": [
            {
              "internalType": "contract IMateriaOrchestrator",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxSpendTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxSpendTokenB",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapToPrice",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "60c060405234801561001057600080fd5b5060405161136538038061136583398101604081905261002f9161004d565b6001600160601b0319606092831b811660a052911b1660805261009e565b6000806040838503121561005f578182fd5b825161006a81610086565b602084015190925061007b81610086565b809150509250929050565b6001600160a01b038116811461009b57600080fd5b50565b60805160601c60a05160601c6112886100dd60003960008181610140015261040d015260008181608301528181610205015261034601526112886000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063b74795d914610046578063bef90fd314610064578063c45a015514610079575b600080fd5b61004e610081565b60405161005b9190610dec565b60405180910390f35b610077610072366004610b56565b6100a5565b005b61004e61040b565b7f000000000000000000000000000000000000000000000000000000000000000081565b85158015906100b357508415155b6100f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f09565b60405180910390fd5b831515806100ff57508215155b610135576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610e9b565b6000806000806101667f00000000000000000000000000000000000000000000000000000000000000008d8d61042f565b915091506101768a8a848461053d565b90945092505050806101b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610fd4565b6000826101c157856101c3565b865b9050808211156101d1578091505b6000836101de578a6101e0565b8b5b90506000846101ef578c6101f1565b8b5b90506101ff8233308761061a565b61022a827f000000000000000000000000000000000000000000000000000000000000000086610746565b6040805160028082526060820183526000926020830190803683370190505090508281600081518110610286577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816001815181106102fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f38ed17390000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000909116906338ed17399061038690889060009086908e908e906004016110c5565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103fa9190810190610bc9565b505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600061043e858561086f565b50905060008061044f88888861096e565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561049457600080fd5b505afa1580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190610caa565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461052b57808261052e565b81815b90999098509650505050505050565b600080858361054c86886109fc565b6105569190611167565b109150600061056585856109fc565b905060006105b56105856103e58661057d578a61057f565b895b906109fc565b6105a6610594856103e86109fc565b8761059f578a6105a1565b8b5b6109fc565b6105b09190611167565b610a5c565b905060006103e5856105d2576105cd876103e86109fc565b6105de565b6105de886103e86109fc565b6105e89190611167565b9050808210156106015760008094509450505050610611565b61060b8282610acc565b93505050505b94509492505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161064e93929190610e0d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161069c9190610d32565b6000604051808303816000865af19150503d80600081146106d9576040519150601f19603f3d011682016040523d82523d6000602084013e6106de565b606091505b50915091508180156107085750805115806107085750808060200190518101906107089190610c83565b61073e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990611031565b505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b38585604051602401610778929190610e3e565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107c69190610d32565b6000604051808303816000865af19150503d8060008114610803576040519150601f19603f3d011682016040523d82523d6000602084013e610808565b606091505b50915091508180156108325750805115806108325750808060200190518101906108329190610c83565b610868576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f40565b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f77565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610912578284610915565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610967576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e99061108e565b9250929050565b600080600061097d858561086f565b91509150858282604051602001610995929190610cf8565b604051602081830303815290604052805190602001206040516020016109bc929190610d6b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000811580610a2057508282610a1281836111a0565b9250610a1e9083611167565b145b610a56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610ed2565b92915050565b60006003821115610abd5750806000610a76600283611167565b610a8190600161114f565b90505b81811015610ab757905080600281610a9c8186611167565b610aa6919061114f565b610ab09190611167565b9050610a84565b50610ac7565b8115610ac7575060015b919050565b600082610ad983826111dd565b9150811115610a56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610e64565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ac757600080fd5b80516dffffffffffffffffffffffffffff81168114610ac757600080fd5b600080600080600080600080610100898b031215610b72578384fd5b610b7b89610b14565b9750610b8960208a01610b14565b965060408901359550606089013594506080890135935060a08901359250610bb360c08a01610b14565b915060e089013590509295985092959890939650565b60006020808385031215610bdb578182fd5b825167ffffffffffffffff80821115610bf2578384fd5b818501915085601f830112610c05578384fd5b815181811115610c1757610c17611223565b83810260405185828201018181108582111715610c3657610c36611223565b604052828152858101935084860182860187018a1015610c54578788fd5b8795505b83861015610c76578051855260019590950194938601938601610c58565b5098975050505050505050565b600060208284031215610c94578081fd5b81518015158114610ca3578182fd5b9392505050565b600080600060608486031215610cbe578283fd5b610cc784610b38565b9250610cd560208501610b38565b9150604084015163ffffffff81168114610ced578182fd5b809150509250925092565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015610d525760208186018101518583015201610d38565b81811115610d605782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604082015260600190565b6020808252601e908201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f60408201527f494e000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561112157845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016110ef565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60008219821115611162576111626111f4565b500190565b60008261119b577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156111d8576111d86111f4565b500290565b6000828210156111ef576111ef6111f4565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220eed2ec07249d1fc53092326ad176a607386dfc4cde1e5c0beb6f90706fcf0b9a64736f6c63430008000033",
          "sourceMap": "326:2450:6:-:0;;;488:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;571:18:6;;;;;;;;599:28;;;;;326:2450;;14:428:38;;;183:2;171:9;162:7;158:23;154:32;151:2;;;204:6;196;189:22;151:2;241:9;235:16;260:33;287:5;260:33;:::i;:::-;362:2;347:18;;341:25;312:5;;-1:-1:-1;375:35:38;341:25;375:35;:::i;:::-;429:7;419:17;;;141:301;;;;;:::o;447:133::-;-1:-1:-1;;;;;524:31:38;;514:42;;504:2;;570:1;567;560:12;504:2;494:86;:::o;:::-;326:2450:6;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "object": "608060405234801561001057600080fd5b50600436106100415760003560e01c8063b74795d914610046578063bef90fd314610064578063c45a015514610079575b600080fd5b61004e610081565b60405161005b9190610dec565b60405180910390f35b610077610072366004610b56565b6100a5565b005b61004e61040b565b7f000000000000000000000000000000000000000000000000000000000000000081565b85158015906100b357508415155b6100f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f09565b60405180910390fd5b831515806100ff57508215155b610135576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610e9b565b6000806000806101667f00000000000000000000000000000000000000000000000000000000000000008d8d61042f565b915091506101768a8a848461053d565b90945092505050806101b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610fd4565b6000826101c157856101c3565b865b9050808211156101d1578091505b6000836101de578a6101e0565b8b5b90506000846101ef578c6101f1565b8b5b90506101ff8233308761061a565b61022a827f000000000000000000000000000000000000000000000000000000000000000086610746565b6040805160028082526060820183526000926020830190803683370190505090508281600081518110610286577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816001815181106102fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f38ed17390000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000909116906338ed17399061038690889060009086908e908e906004016110c5565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103fa9190810190610bc9565b505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600061043e858561086f565b50905060008061044f88888861096e565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561049457600080fd5b505afa1580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190610caa565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461052b57808261052e565b81815b90999098509650505050505050565b600080858361054c86886109fc565b6105569190611167565b109150600061056585856109fc565b905060006105b56105856103e58661057d578a61057f565b895b906109fc565b6105a6610594856103e86109fc565b8761059f578a6105a1565b8b5b6109fc565b6105b09190611167565b610a5c565b905060006103e5856105d2576105cd876103e86109fc565b6105de565b6105de886103e86109fc565b6105e89190611167565b9050808210156106015760008094509450505050610611565b61060b8282610acc565b93505050505b94509492505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161064e93929190610e0d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161069c9190610d32565b6000604051808303816000865af19150503d80600081146106d9576040519150601f19603f3d011682016040523d82523d6000602084013e6106de565b606091505b50915091508180156107085750805115806107085750808060200190518101906107089190610c83565b61073e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990611031565b505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b38585604051602401610778929190610e3e565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107c69190610d32565b6000604051808303816000865af19150503d8060008114610803576040519150601f19603f3d011682016040523d82523d6000602084013e610808565b606091505b50915091508180156108325750805115806108325750808060200190518101906108329190610c83565b610868576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f40565b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f77565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610912578284610915565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610967576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e99061108e565b9250929050565b600080600061097d858561086f565b91509150858282604051602001610995929190610cf8565b604051602081830303815290604052805190602001206040516020016109bc929190610d6b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000811580610a2057508282610a1281836111a0565b9250610a1e9083611167565b145b610a56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610ed2565b92915050565b60006003821115610abd5750806000610a76600283611167565b610a8190600161114f565b90505b81811015610ab757905080600281610a9c8186611167565b610aa6919061114f565b610ab09190611167565b9050610a84565b50610ac7565b8115610ac7575060015b919050565b600082610ad983826111dd565b9150811115610a56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610e64565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ac757600080fd5b80516dffffffffffffffffffffffffffff81168114610ac757600080fd5b600080600080600080600080610100898b031215610b72578384fd5b610b7b89610b14565b9750610b8960208a01610b14565b965060408901359550606089013594506080890135935060a08901359250610bb360c08a01610b14565b915060e089013590509295985092959890939650565b60006020808385031215610bdb578182fd5b825167ffffffffffffffff80821115610bf2578384fd5b818501915085601f830112610c05578384fd5b815181811115610c1757610c17611223565b83810260405185828201018181108582111715610c3657610c36611223565b604052828152858101935084860182860187018a1015610c54578788fd5b8795505b83861015610c76578051855260019590950194938601938601610c58565b5098975050505050505050565b600060208284031215610c94578081fd5b81518015158114610ca3578182fd5b9392505050565b600080600060608486031215610cbe578283fd5b610cc784610b38565b9250610cd560208501610b38565b9150604084015163ffffffff81168114610ced578182fd5b809150509250925092565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015610d525760208186018101518583015201610d38565b81811115610d605782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604082015260600190565b6020808252601e908201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f60408201527f494e000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561112157845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016110ef565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60008219821115611162576111626111f4565b500190565b60008261119b577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156111d8576111d86111f4565b500290565b6000828210156111ef576111ef6111f4565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220eed2ec07249d1fc53092326ad176a607386dfc4cde1e5c0beb6f90706fcf0b9a64736f6c63430008000033",
          "sourceMap": "326:2450:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;393:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;908:1866;;;;;;:::i;:::-;;:::i;:::-;;449:32;;;:::i;393:50::-;;;:::o;908:1866::-;1263:20;;;;;:44;;-1:-1:-1;1287:20:6;;;1263:44;1255:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;1460:19;;;;:42;;-1:-1:-1;1483:19:6;;;1460:42;1452:85;;;;;;;;;;;;:::i;:::-;1548:9;1567:16;1608;1626;1646:51;1673:7;1682:6;1690;1646:26;:51::i;:::-;1607:90;;;;1730:156;1804:15;1821;1854:8;1864;1730:56;:156::i;:::-;1711:175;;-1:-1:-1;1711:175:6;-1:-1:-1;;;1915:12:6;1907:59;;;;;;;;;;;;:::i;:::-;2030:16;2049:4;:38;;2073:14;2049:38;;;2056:14;2049:38;2030:57;;2112:8;2101;:19;2097:69;;;2147:8;2136:19;;2097:69;2176:15;2194:4;:22;;2210:6;2194:22;;;2201:6;2194:22;2176:40;;2226:16;2245:4;:22;;2261:6;2245:22;;;2252:6;2245:22;2226:41;;2277:77;2309:7;2318:10;2338:4;2345:8;2277:31;:77::i;:::-;2364:68;2391:7;2408:12;2423:8;2364:26;:68::i;:::-;2467:16;;;2481:1;2467:16;;;;;;;;2443:21;;2467:16;;;;;;;;;;-1:-1:-1;2467:16:6;2443:40;;2503:7;2493:4;2498:1;2493:7;;;;;;;;;;;;;;;;;;;;;:17;;;;;;;;;;;2530:8;2520:4;2525:1;2520:7;;;;;;;;;;;;;;;;:18;;;;:7;;;;;;;;;:18;2549:218;;;;;:12;:37;;;;;;:218;;2600:8;;2622:1;;2715:4;;2733:2;;2749:8;;2549:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;908:1866;;;;;;;;;;;;;;:::o;449:32::-;;;:::o;1527:429:32:-;1650:16;1668;1697:14;1717:26;1728:6;1736;1717:10;:26::i;:::-;1696:47;;;1754:16;1772;1807:32;1815:7;1824:6;1832;1807:7;:32::i;:::-;1794:58;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1753:101;;;;;;;;;1897:6;1887:16;;:6;:16;;;:62;;1930:8;1940;1887:62;;;1907:8;1917;1887:62;1864:85;;;;-1:-1:-1;1527:429:32;-1:-1:-1;;;;;;;1527:429:32:o;488:890:33:-;673:9;684:16;770:15;759:8;719:39;732:8;742:15;719:12;:39::i;:::-;:48;;;;:::i;:::-;:66;;-1:-1:-1;796:17:33;816:22;:8;829;816:12;:22::i;:::-;796:42;;849:16;868:223;1017:51;1064:3;1018:4;:40;;1043:15;1018:40;;;1025:15;1018:40;1017:46;;:51::i;:::-;891:108;921:19;:9;935:4;921:13;:19::i;:::-;958:4;:40;;983:15;958:40;;;965:15;958:40;891:12;:108::i;:::-;:177;;;;:::i;:::-;868:9;:223::i;:::-;849:242;;1101:17;1172:3;1122:4;:46;;1150:18;:8;1163:4;1150:12;:18::i;:::-;1122:46;;;1129:18;:8;1142:4;1129:12;:18::i;:::-;1121:54;;;;:::i;:::-;1101:74;;1201:9;1190:8;:20;1186:43;;;1220:5;1227:1;1212:17;;;;;;;;;1186:43;1348:23;:8;1361:9;1348:12;:23::i;:::-;1337:34;;488:890;;;;;;;;;;;:::o;1001:439:36:-;1219:12;1233:17;1254:5;:10;;1288;1300:4;1306:2;1310:5;1265:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1254:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:99;;;;1335:7;:57;;;;-1:-1:-1;1347:11:36;;:16;;:44;;;1378:4;1367:24;;;;;;;;;;;;:::i;:::-;1327:106;;;;;;;;;;;;:::i;:::-;1001:439;;;;;;:::o;212:387::-;390:12;404:17;425:5;:10;;459;471:2;475:5;436:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;425:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;389:93;;;;500:7;:57;;;;-1:-1:-1;512:11:36;;:16;;:44;;;543:4;532:24;;;;;;;;;;;;:::i;:::-;492:100;;;;;;;;;;;;:::i;:::-;212:387;;;;;:::o;334:341:32:-;409:14;425;469:6;459:16;;:6;:16;;;;451:64;;;;;;;;;;;;:::i;:::-;553:6;544:15;;:6;:15;;;:53;;582:6;590;544:53;;;563:6;571;544:53;525:72;;-1:-1:-1;525:72:32;-1:-1:-1;615:20:32;;;607:61;;;;;;;;;;;;:::i;:::-;334:341;;;;;:::o;764:708::-;883:12;908:14;924;942:26;953:6;961;942:10;:26::i;:::-;907:61;;;;1178:7;1242:6;1250;1225:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1215:43;;;;;;1095:306;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1060:363;;1095:306;1060:363;;;;;764:708;-1:-1:-1;;;;;;764:708:32:o;458:140:35:-;510:6;536;;;:30;;-1:-1:-1;565:1:35;560;551:5;560:1;565;551:5;:::i;:::-;547:9;-1:-1:-1;546:15:35;;547:9;546:15;:::i;:::-;:20;536:30;528:63;;;;;;;;;;;;:::i;:::-;458:140;;;;:::o;346:292:34:-;391:6;417:1;413;:5;409:223;;;-1:-1:-1;438:1:34;453:6;462:5;466:1;438;462:5;:::i;:::-;:9;;470:1;462:9;:::i;:::-;453:18;;485:89;496:1;492;:5;485:89;;;521:1;-1:-1:-1;521:1:34;558;521;545:5;521:1;545;:5;:::i;:::-;:9;;;;:::i;:::-;544:15;;;;:::i;:::-;540:19;;485:89;;;409:223;;;;594:6;;590:42;;-1:-1:-1;620:1:34;590:42;346:292;;;:::o;325:127:35:-;377:6;418:1;408:5;412:1;418;408:5;:::i;:::-;404:9;;;403:16;;395:50;;;;;;;;;;;;:::i;14:198:38:-;84:20;;144:42;133:54;;123:65;;113:2;;202:1;199;192:12;217:190;298:13;;351:30;340:42;;330:53;;320:2;;397:1;394;387:12;412:695;;;;;;;;;643:3;631:9;622:7;618:23;614:33;611:2;;;665:6;657;650:22;611:2;693:31;714:9;693:31;:::i;:::-;683:41;;743:40;779:2;768:9;764:18;743:40;:::i;:::-;733:50;;830:2;819:9;815:18;802:32;792:42;;881:2;870:9;866:18;853:32;843:42;;932:3;921:9;917:19;904:33;894:43;;984:3;973:9;969:19;956:33;946:43;;1008:41;1044:3;1033:9;1029:19;1008:41;:::i;:::-;998:51;;1096:3;1085:9;1081:19;1068:33;1058:43;;601:506;;;;;;;;;;;:::o;1112:1148::-;;1238:2;1281;1269:9;1260:7;1256:23;1252:32;1249:2;;;1302:6;1294;1287:22;1249:2;1340:9;1334:16;1369:18;1410:2;1402:6;1399:14;1396:2;;;1431:6;1423;1416:22;1396:2;1474:6;1463:9;1459:22;1449:32;;1519:7;1512:4;1508:2;1504:13;1500:27;1490:2;;1546:6;1538;1531:22;1490:2;1580;1574:9;1602:2;1598;1595:10;1592:2;;;1608:18;;:::i;:::-;1655:2;1651;1647:11;1687:2;1681:9;1738:2;1733;1725:6;1721:15;1717:24;1791:6;1779:10;1776:22;1771:2;1759:10;1756:18;1753:46;1750:2;;;1802:18;;:::i;:::-;1838:2;1831:22;1888:18;;;1922:15;;;;-1:-1:-1;1957:11:38;;;1987;;;1983:20;;1980:33;-1:-1:-1;1977:2:38;;;2031:6;2023;2016:22;1977:2;2058:6;2049:15;;2073:156;2087:2;2084:1;2081:9;2073:156;;;2144:10;;2132:23;;2105:1;2098:9;;;;;2175:12;;;;2207;;2073:156;;;-1:-1:-1;2248:6:38;1218:1042;-1:-1:-1;;;;;;;;1218:1042:38:o;2265:297::-;;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2406:6;2398;2391:22;2353:2;2443:9;2437:16;2496:5;2489:13;2482:21;2475:5;2472:32;2462:2;;2523:6;2515;2508:22;2462:2;2551:5;2343:219;-1:-1:-1;;;2343:219:38:o;2567:474::-;;;;2723:2;2711:9;2702:7;2698:23;2694:32;2691:2;;;2744:6;2736;2729:22;2691:2;2772:42;2804:9;2772:42;:::i;:::-;2762:52;;2833:51;2880:2;2869:9;2865:18;2833:51;:::i;:::-;2823:61;;2927:2;2916:9;2912:18;2906:25;2971:10;2964:5;2960:22;2953:5;2950:33;2940:2;;3002:6;2994;2987:22;2940:2;3030:5;3020:15;;;2681:360;;;;;:::o;3046:368::-;3213:66;3308:2;3304:15;;;3300:24;;3288:37;;3359:15;;;;3355:24;3350:2;3341:12;;3334:46;3405:2;3396:12;;3193:221::o;3419:430::-;;3586:6;3580:13;3611:3;3623:129;3637:6;3634:1;3631:13;3623:129;;;3735:4;3719:14;;;3715:25;;3709:32;3696:11;;;3689:53;3652:12;3623:129;;;3770:6;3767:1;3764:13;3761:2;;;3805:3;3796:6;3791:3;3787:16;3780:29;3761:2;-1:-1:-1;3827:16:38;;;;;3556:293;-1:-1:-1;;3556:293:38:o;3854:724::-;4225:66;4213:79;;4329:2;4325:15;;;;4342:66;4321:88;4317:1;4308:11;;4301:109;4435:2;4426:12;;4419:28;4477:66;4472:2;4463:12;;4456:88;4569:2;4560:12;;4203:375::o;4583:226::-;4759:42;4747:55;;;;4729:74;;4717:2;4702:18;;4684:125::o;4814:398::-;5026:42;5095:15;;;5077:34;;5147:15;;;;5142:2;5127:18;;5120:43;5194:2;5179:18;;5172:34;;;;5004:2;4989:18;;4971:241::o;5217:297::-;5421:42;5409:55;;;;5391:74;;5496:2;5481:18;;5474:34;5379:2;5364:18;;5346:168::o;5779:345::-;5981:2;5963:21;;;6020:2;6000:18;;;5993:30;6059:23;6054:2;6039:18;;6032:51;6115:2;6100:18;;5953:171::o;6129:354::-;6331:2;6313:21;;;6370:2;6350:18;;;6343:30;6409:32;6404:2;6389:18;;6382:60;6474:2;6459:18;;6303:180::o;6488:344::-;6690:2;6672:21;;;6729:2;6709:18;;;6702:30;6768:22;6763:2;6748:18;;6741:50;6823:2;6808:18;;6662:170::o;6837:354::-;7039:2;7021:21;;;7078:2;7058:18;;;7051:30;7117:32;7112:2;7097:18;;7090:60;7182:2;7167:18;;7011:180::o;7196:354::-;7398:2;7380:21;;;7437:2;7417:18;;;7410:30;7476:32;7471:2;7456:18;;7449:60;7541:2;7526:18;;7370:180::o;7555:399::-;7757:2;7739:21;;;7796:2;7776:18;;;7769:30;7835:34;7830:2;7815:18;;7808:62;7906:5;7901:2;7886:18;;7879:33;7944:3;7929:19;;7729:225::o;7959:398::-;8161:2;8143:21;;;8200:2;8180:18;;;8173:30;8239:34;8234:2;8219:18;;8212:62;8310:4;8305:2;8290:18;;8283:32;8347:3;8332:19;;8133:224::o;8362:400::-;8564:2;8546:21;;;8603:2;8583:18;;;8576:30;8642:34;8637:2;8622:18;;8615:62;8713:6;8708:2;8693:18;;8686:34;8752:3;8737:19;;8536:226::o;8767:352::-;8969:2;8951:21;;;9008:2;8988:18;;;8981:30;9047;9042:2;9027:18;;9020:58;9110:2;9095:18;;8941:178::o;9124:1029::-;;9434:3;9423:9;9419:19;9465:6;9454:9;9447:25;9491:2;9529:6;9524:2;9513:9;9509:18;9502:34;9572:3;9567:2;9556:9;9552:18;9545:31;9596:6;9631;9625:13;9662:6;9654;9647:22;9700:3;9689:9;9685:19;9678:26;;9739:2;9731:6;9727:15;9713:29;;9760:4;9773:218;9787:6;9784:1;9781:13;9773:218;;;9852:13;;9867:42;9848:62;9836:75;;9966:15;;;;9931:12;;;;9809:1;9802:9;9773:218;;;-1:-1:-1;;10059:42:38;10047:55;;;;10042:2;10027:18;;10020:83;-1:-1:-1;;;10134:3:38;10119:19;10112:35;10008:3;9395:758;-1:-1:-1;;;9395:758:38:o;10158:128::-;;10229:1;10225:6;10222:1;10219:13;10216:2;;;10235:18;;:::i;:::-;-1:-1:-1;10271:9:38;;10206:80::o;10291:274::-;;10357:1;10347:2;;10392:77;10389:1;10382:88;10493:4;10490:1;10483:15;10521:4;10518:1;10511:15;10347:2;-1:-1:-1;10550:9:38;;10337:228::o;10570:::-;;10736:1;10668:66;10664:74;10661:1;10658:81;10653:1;10646:9;10639:17;10635:105;10632:2;;;10743:18;;:::i;:::-;-1:-1:-1;10783:9:38;;10622:176::o;10803:125::-;;10871:1;10868;10865:8;10862:2;;;10876:18;;:::i;:::-;-1:-1:-1;10913:9:38;;10852:76::o;10933:184::-;10985:77;10982:1;10975:88;11082:4;11079:1;11072:15;11106:4;11103:1;11096:15;11122:184;11174:77;11171:1;11164:88;11271:4;11268:1;11261:15;11295:4;11292:1;11285:15"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory_\",\"type\":\"address\"},{\"internalType\":\"contract IMateriaOrchestrator\",\"name\":\"orchestrator_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"orchestrator\",\"outputs\":[{\"internalType\":\"contract IMateriaOrchestrator\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSpendTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSpendTokenB\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapToPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/examples/ExampleSwapToPrice.sol\":\"ExampleSwapToPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/examples/ExampleSwapToPrice.sol\":{\"keccak256\":\"0x265e969d3a29b201e6f7a3db6bbefaaf3973423e0778b72633fbab94be740bd8\",\"urls\":[\"bzz-raw://a192d2421e800f26bbc745367580d10bd1f2cd98cf83f5529cdf7aacf2679101\",\"dweb:/ipfs/QmQ6eiAgaE8EEt8uk6WncuFxsAjz7dHKEgPMDEtrkegkNZ\"]},\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IDoubleProxy.sol\":{\"keccak256\":\"0xb3775ff336d8ca9e0f7cb3b7e7c322d96c6360b53ec4a3ce45c6540d4f0126a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://6ec1948724904ecf9185f960548865d20a13969a840c926e9162e4bb354d18f6\",\"dweb:/ipfs/QmXbRyhfnW3E4Mij5y8v9JfHVB2vqxxwDgNfvHeu3wHiHJ\"]},\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IERC20WrapperV1.sol\":{\"keccak256\":\"0xb11ab8431790ecf02d6380277e277a1e44fcf1cbc81973301149e7080157ea4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b5dfc1840e8834ba39b1a634fdc2ba67d250adc4f8540f0ee33e16439ccb9cd\",\"dweb:/ipfs/QmTyF4vz44kcYuLuZAEW7tBxWuMiNZAojDKopi8oeudgk3\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]},\"contracts/interfaces/IEthItemMainInterface.sol\":{\"keccak256\":\"0x1bc85f4e88618a2d75910da856d5d43a87213463dae57054b44aa0e2220c43e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12240288d6503024c37ad756722f451ad3d819affd30b9d54ca0e06942c414b0\",\"dweb:/ipfs/QmU1hLcanobgXgEEXbbA56YPob23ghDXXqjK7gCCXbj3mT\"]},\"contracts/interfaces/IEthItemModelBase.sol\":{\"keccak256\":\"0x2ef4d851f1127e58dc496490f84ebe5690bff39c48a0ff43338d0087e3b114da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7db0efdf2c2c6c758fa12146e9aa31ebe1fc7b1eaa36d644ada5a7696b22c627\",\"dweb:/ipfs/QmXP62zz7qHJtQfxNRoxPsPiJxhXTKaKRfjCHGxetwgYyV\"]},\"contracts/interfaces/IMateriaFactory.sol\":{\"keccak256\":\"0xbb23d0937dd4e8da3b15e4e461603554abc9945d40b713f5f8f6e612d7e36dae\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://1cc856dd3375c7c345c693edda94b27d5c03d666843989308d6e61ef786b3718\",\"dweb:/ipfs/QmZaq9Vec3gVXNFoaWX56B2DQPYjpiDahdEoqogskHiJAp\"]},\"contracts/interfaces/IMateriaOrchestrator.sol\":{\"keccak256\":\"0x178eea6d9abe7758adbf30d406c9e3b1e05028441e6bf2661f6ac9d7441b06fc\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://b96f2d38b59f06bbfdf7d13e5a375e8eb6e1de507f40be7e7cbe37b34526a0e6\",\"dweb:/ipfs/QmSgMmM6Uk2EpgwNZxZpJf3yHHPQZ6LvcBWAV9DuPSnrCm\"]},\"contracts/interfaces/IMateriaPair.sol\":{\"keccak256\":\"0x9bebb503cf622a7e7328ff812b8817e1d3b22e273d345083118e92522b810693\",\"urls\":[\"bzz-raw://a0b3308a2e9f28a85ec586372329792eaf32562c7293af0657ef03f8d04bc7f9\",\"dweb:/ipfs/QmegwdpH1wYAUtTwKu1yUiekj13CB251znNc4Kb2Jf5b2L\"]},\"contracts/libraries/MateriaLibrary.sol\":{\"keccak256\":\"0x84b8cdd67ecab6d9bd442140670a16c4608fefdcaa702c25339a89b0527381c6\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://f2ce38a46f0ddc6b043ba9e91590f482553fc96c7bec769825d36089f6d08887\",\"dweb:/ipfs/QmXVp7AwoHFm4whU26XE9kvaYmfb4QyXrzsqaEGXvgybFN\"]},\"contracts/libraries/MateriaLiquidityMathLibrary.sol\":{\"keccak256\":\"0x138eda0b6b2fcd13896f36df95fabfba41993ed795390821bf122627f72d88d3\",\"urls\":[\"bzz-raw://82d6d09dd40daeb1753dcaea811bf07915c5ee54eaf8b8c4b025d7216eae46ba\",\"dweb:/ipfs/QmUCp5AjamJqu6cJdGnfwG2m27UfMtaAe67ksroFknrNcJ\"]},\"contracts/libraries/Math.sol\":{\"keccak256\":\"0x8d2aa0782d2018f23f4dde78b89f561c377dbb9bbcc877da7c2bb5e5f95e1502\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c62a2dbd0f790792855815f1ff2d39fea43b1bc9a29b7e60407afb7fc1ba1bf0\",\"dweb:/ipfs/QmYDAf4QU6xL9FDBKzkjVmoXxUhx3R4FBTnA9hxjJE9mxk\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xe04b4ed1aab8779734d012e907f742e8b6e8ad539c01d5466b9eb58752fdc514\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://667941f2ea3584629681a303e988ffcbc33a2e8313f4658ad8700b2209b3ea4d\",\"dweb:/ipfs/QmafqLrntkf6gRyhAHt4wYojdHwuZXeD8gcE7FJWW6rKWm\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0xb2c4a89b2ee4538b41badb2b6e2d141deeca68be9298ec3e7f98b6812b4ee2a2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bf3e8a68c38541e0425dfd1f825371086a9a18eaadf12000e00b0440156198b\",\"dweb:/ipfs/QmcfasSoXaDg5A5dscMiKH41fWnCFnbJfpSAzn5gbMaVxd\"]}},\"version\":1}",
      "bytecode": "60c060405234801561001057600080fd5b5060405161136538038061136583398101604081905261002f9161004d565b6001600160601b0319606092831b811660a052911b1660805261009e565b6000806040838503121561005f578182fd5b825161006a81610086565b602084015190925061007b81610086565b809150509250929050565b6001600160a01b038116811461009b57600080fd5b50565b60805160601c60a05160601c6112886100dd60003960008181610140015261040d015260008181608301528181610205015261034601526112886000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063b74795d914610046578063bef90fd314610064578063c45a015514610079575b600080fd5b61004e610081565b60405161005b9190610dec565b60405180910390f35b610077610072366004610b56565b6100a5565b005b61004e61040b565b7f000000000000000000000000000000000000000000000000000000000000000081565b85158015906100b357508415155b6100f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f09565b60405180910390fd5b831515806100ff57508215155b610135576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610e9b565b6000806000806101667f00000000000000000000000000000000000000000000000000000000000000008d8d61042f565b915091506101768a8a848461053d565b90945092505050806101b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610fd4565b6000826101c157856101c3565b865b9050808211156101d1578091505b6000836101de578a6101e0565b8b5b90506000846101ef578c6101f1565b8b5b90506101ff8233308761061a565b61022a827f000000000000000000000000000000000000000000000000000000000000000086610746565b6040805160028082526060820183526000926020830190803683370190505090508281600081518110610286577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816001815181106102fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f38ed17390000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000909116906338ed17399061038690889060009086908e908e906004016110c5565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103fa9190810190610bc9565b505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600061043e858561086f565b50905060008061044f88888861096e565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561049457600080fd5b505afa1580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190610caa565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461052b57808261052e565b81815b90999098509650505050505050565b600080858361054c86886109fc565b6105569190611167565b109150600061056585856109fc565b905060006105b56105856103e58661057d578a61057f565b895b906109fc565b6105a6610594856103e86109fc565b8761059f578a6105a1565b8b5b6109fc565b6105b09190611167565b610a5c565b905060006103e5856105d2576105cd876103e86109fc565b6105de565b6105de886103e86109fc565b6105e89190611167565b9050808210156106015760008094509450505050610611565b61060b8282610acc565b93505050505b94509492505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161064e93929190610e0d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161069c9190610d32565b6000604051808303816000865af19150503d80600081146106d9576040519150601f19603f3d011682016040523d82523d6000602084013e6106de565b606091505b50915091508180156107085750805115806107085750808060200190518101906107089190610c83565b61073e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990611031565b505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b38585604051602401610778929190610e3e565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107c69190610d32565b6000604051808303816000865af19150503d8060008114610803576040519150601f19603f3d011682016040523d82523d6000602084013e610808565b606091505b50915091508180156108325750805115806108325750808060200190518101906108329190610c83565b610868576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f40565b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f77565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610912578284610915565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610967576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e99061108e565b9250929050565b600080600061097d858561086f565b91509150858282604051602001610995929190610cf8565b604051602081830303815290604052805190602001206040516020016109bc929190610d6b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000811580610a2057508282610a1281836111a0565b9250610a1e9083611167565b145b610a56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610ed2565b92915050565b60006003821115610abd5750806000610a76600283611167565b610a8190600161114f565b90505b81811015610ab757905080600281610a9c8186611167565b610aa6919061114f565b610ab09190611167565b9050610a84565b50610ac7565b8115610ac7575060015b919050565b600082610ad983826111dd565b9150811115610a56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610e64565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ac757600080fd5b80516dffffffffffffffffffffffffffff81168114610ac757600080fd5b600080600080600080600080610100898b031215610b72578384fd5b610b7b89610b14565b9750610b8960208a01610b14565b965060408901359550606089013594506080890135935060a08901359250610bb360c08a01610b14565b915060e089013590509295985092959890939650565b60006020808385031215610bdb578182fd5b825167ffffffffffffffff80821115610bf2578384fd5b818501915085601f830112610c05578384fd5b815181811115610c1757610c17611223565b83810260405185828201018181108582111715610c3657610c36611223565b604052828152858101935084860182860187018a1015610c54578788fd5b8795505b83861015610c76578051855260019590950194938601938601610c58565b5098975050505050505050565b600060208284031215610c94578081fd5b81518015158114610ca3578182fd5b9392505050565b600080600060608486031215610cbe578283fd5b610cc784610b38565b9250610cd560208501610b38565b9150604084015163ffffffff81168114610ced578182fd5b809150509250925092565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015610d525760208186018101518583015201610d38565b81811115610d605782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604082015260600190565b6020808252601e908201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f60408201527f494e000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561112157845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016110ef565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60008219821115611162576111626111f4565b500190565b60008261119b577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156111d8576111d86111f4565b500290565b6000828210156111ef576111ef6111f4565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220eed2ec07249d1fc53092326ad176a607386dfc4cde1e5c0beb6f90706fcf0b9a64736f6c63430008000033",
      "bin": "60c060405234801561001057600080fd5b5060405161136538038061136583398101604081905261002f9161004d565b6001600160601b0319606092831b811660a052911b1660805261009e565b6000806040838503121561005f578182fd5b825161006a81610086565b602084015190925061007b81610086565b809150509250929050565b6001600160a01b038116811461009b57600080fd5b50565b60805160601c60a05160601c6112886100dd60003960008181610140015261040d015260008181608301528181610205015261034601526112886000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063b74795d914610046578063bef90fd314610064578063c45a015514610079575b600080fd5b61004e610081565b60405161005b9190610dec565b60405180910390f35b610077610072366004610b56565b6100a5565b005b61004e61040b565b7f000000000000000000000000000000000000000000000000000000000000000081565b85158015906100b357508415155b6100f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f09565b60405180910390fd5b831515806100ff57508215155b610135576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610e9b565b6000806000806101667f00000000000000000000000000000000000000000000000000000000000000008d8d61042f565b915091506101768a8a848461053d565b90945092505050806101b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610fd4565b6000826101c157856101c3565b865b9050808211156101d1578091505b6000836101de578a6101e0565b8b5b90506000846101ef578c6101f1565b8b5b90506101ff8233308761061a565b61022a827f000000000000000000000000000000000000000000000000000000000000000086610746565b6040805160028082526060820183526000926020830190803683370190505090508281600081518110610286577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816001815181106102fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f38ed17390000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000909116906338ed17399061038690889060009086908e908e906004016110c5565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103fa9190810190610bc9565b505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600061043e858561086f565b50905060008061044f88888861096e565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561049457600080fd5b505afa1580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190610caa565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461052b57808261052e565b81815b90999098509650505050505050565b600080858361054c86886109fc565b6105569190611167565b109150600061056585856109fc565b905060006105b56105856103e58661057d578a61057f565b895b906109fc565b6105a6610594856103e86109fc565b8761059f578a6105a1565b8b5b6109fc565b6105b09190611167565b610a5c565b905060006103e5856105d2576105cd876103e86109fc565b6105de565b6105de886103e86109fc565b6105e89190611167565b9050808210156106015760008094509450505050610611565b61060b8282610acc565b93505050505b94509492505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161064e93929190610e0d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161069c9190610d32565b6000604051808303816000865af19150503d80600081146106d9576040519150601f19603f3d011682016040523d82523d6000602084013e6106de565b606091505b50915091508180156107085750805115806107085750808060200190518101906107089190610c83565b61073e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990611031565b505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b38585604051602401610778929190610e3e565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107c69190610d32565b6000604051808303816000865af19150503d8060008114610803576040519150601f19603f3d011682016040523d82523d6000602084013e610808565b606091505b50915091508180156108325750805115806108325750808060200190518101906108329190610c83565b610868576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f40565b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f77565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610912578284610915565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610967576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e99061108e565b9250929050565b600080600061097d858561086f565b91509150858282604051602001610995929190610cf8565b604051602081830303815290604052805190602001206040516020016109bc929190610d6b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000811580610a2057508282610a1281836111a0565b9250610a1e9083611167565b145b610a56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610ed2565b92915050565b60006003821115610abd5750806000610a76600283611167565b610a8190600161114f565b90505b81811015610ab757905080600281610a9c8186611167565b610aa6919061114f565b610ab09190611167565b9050610a84565b50610ac7565b8115610ac7575060015b919050565b600082610ad983826111dd565b9150811115610a56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610e64565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ac757600080fd5b80516dffffffffffffffffffffffffffff81168114610ac757600080fd5b600080600080600080600080610100898b031215610b72578384fd5b610b7b89610b14565b9750610b8960208a01610b14565b965060408901359550606089013594506080890135935060a08901359250610bb360c08a01610b14565b915060e089013590509295985092959890939650565b60006020808385031215610bdb578182fd5b825167ffffffffffffffff80821115610bf2578384fd5b818501915085601f830112610c05578384fd5b815181811115610c1757610c17611223565b83810260405185828201018181108582111715610c3657610c36611223565b604052828152858101935084860182860187018a1015610c54578788fd5b8795505b83861015610c76578051855260019590950194938601938601610c58565b5098975050505050505050565b600060208284031215610c94578081fd5b81518015158114610ca3578182fd5b9392505050565b600080600060608486031215610cbe578283fd5b610cc784610b38565b9250610cd560208501610b38565b9150604084015163ffffffff81168114610ced578182fd5b809150509250925092565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015610d525760208186018101518583015201610d38565b81811115610d605782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604082015260600190565b6020808252601e908201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f60408201527f494e000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561112157845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016110ef565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60008219821115611162576111626111f4565b500190565b60008261119b577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156111d8576111d86111f4565b500290565b6000828210156111ef576111ef6111f4565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220eed2ec07249d1fc53092326ad176a607386dfc4cde1e5c0beb6f90706fcf0b9a64736f6c63430008000033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100415760003560e01c8063b74795d914610046578063bef90fd314610064578063c45a015514610079575b600080fd5b61004e610081565b60405161005b9190610dec565b60405180910390f35b610077610072366004610b56565b6100a5565b005b61004e61040b565b7f000000000000000000000000000000000000000000000000000000000000000081565b85158015906100b357508415155b6100f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f09565b60405180910390fd5b831515806100ff57508215155b610135576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610e9b565b6000806000806101667f00000000000000000000000000000000000000000000000000000000000000008d8d61042f565b915091506101768a8a848461053d565b90945092505050806101b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610fd4565b6000826101c157856101c3565b865b9050808211156101d1578091505b6000836101de578a6101e0565b8b5b90506000846101ef578c6101f1565b8b5b90506101ff8233308761061a565b61022a827f000000000000000000000000000000000000000000000000000000000000000086610746565b6040805160028082526060820183526000926020830190803683370190505090508281600081518110610286577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816001815181106102fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f38ed17390000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000909116906338ed17399061038690889060009086908e908e906004016110c5565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103fa9190810190610bc9565b505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600061043e858561086f565b50905060008061044f88888861096e565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561049457600080fd5b505afa1580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190610caa565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461052b57808261052e565b81815b90999098509650505050505050565b600080858361054c86886109fc565b6105569190611167565b109150600061056585856109fc565b905060006105b56105856103e58661057d578a61057f565b895b906109fc565b6105a6610594856103e86109fc565b8761059f578a6105a1565b8b5b6109fc565b6105b09190611167565b610a5c565b905060006103e5856105d2576105cd876103e86109fc565b6105de565b6105de886103e86109fc565b6105e89190611167565b9050808210156106015760008094509450505050610611565b61060b8282610acc565b93505050505b94509492505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161064e93929190610e0d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161069c9190610d32565b6000604051808303816000865af19150503d80600081146106d9576040519150601f19603f3d011682016040523d82523d6000602084013e6106de565b606091505b50915091508180156107085750805115806107085750808060200190518101906107089190610c83565b61073e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990611031565b505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b38585604051602401610778929190610e3e565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107c69190610d32565b6000604051808303816000865af19150503d8060008114610803576040519150601f19603f3d011682016040523d82523d6000602084013e610808565b606091505b50915091508180156108325750805115806108325750808060200190518101906108329190610c83565b610868576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f40565b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610f77565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610912578284610915565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610967576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e99061108e565b9250929050565b600080600061097d858561086f565b91509150858282604051602001610995929190610cf8565b604051602081830303815290604052805190602001206040516020016109bc929190610d6b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b6000811580610a2057508282610a1281836111a0565b9250610a1e9083611167565b145b610a56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610ed2565b92915050565b60006003821115610abd5750806000610a76600283611167565b610a8190600161114f565b90505b81811015610ab757905080600281610a9c8186611167565b610aa6919061114f565b610ab09190611167565b9050610a84565b50610ac7565b8115610ac7575060015b919050565b600082610ad983826111dd565b9150811115610a56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e990610e64565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ac757600080fd5b80516dffffffffffffffffffffffffffff81168114610ac757600080fd5b600080600080600080600080610100898b031215610b72578384fd5b610b7b89610b14565b9750610b8960208a01610b14565b965060408901359550606089013594506080890135935060a08901359250610bb360c08a01610b14565b915060e089013590509295985092959890939650565b60006020808385031215610bdb578182fd5b825167ffffffffffffffff80821115610bf2578384fd5b818501915085601f830112610c05578384fd5b815181811115610c1757610c17611223565b83810260405185828201018181108582111715610c3657610c36611223565b604052828152858101935084860182860187018a1015610c54578788fd5b8795505b83861015610c76578051855260019590950194938601938601610c58565b5098975050505050505050565b600060208284031215610c94578081fd5b81518015158114610ca3578182fd5b9392505050565b600080600060608486031215610cbe578283fd5b610cc784610b38565b9250610cd560208501610b38565b9150604084015163ffffffff81168114610ced578182fd5b809150509250925092565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015610d525760208186018101518583015201610d38565b81811115610d605782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604082015260600190565b6020808252601e908201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604082015260600190565b60208082526023908201527f4d6174657269614c6962726172793a204944454e544943414c5f41444452455360408201527f5345530000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f60408201527f494e000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d6174657269614c6962726172793a205a45524f5f4144445245535300000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561112157845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016110ef565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60008219821115611162576111626111f4565b500190565b60008261119b577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156111d8576111d86111f4565b500290565b6000828210156111ef576111ef6111f4565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220eed2ec07249d1fc53092326ad176a607386dfc4cde1e5c0beb6f90706fcf0b9a64736f6c63430008000033",
      "srcmap": "326:2450:6:-:0;;;488:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;571:18:6;;;;;;;;599:28;;;;;326:2450;;14:428:38;;;183:2;171:9;162:7;158:23;154:32;151:2;;;204:6;196;189:22;151:2;241:9;235:16;260:33;287:5;260:33;:::i;:::-;362:2;347:18;;341:25;312:5;;-1:-1:-1;375:35:38;341:25;375:35;:::i;:::-;429:7;419:17;;;141:301;;;;;:::o;447:133::-;-1:-1:-1;;;;;524:31:38;;514:42;;504:2;;570:1;567;560:12;504:2;494:86;:::o;:::-;326:2450:6;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "326:2450:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;393:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;908:1866;;;;;;:::i;:::-;;:::i;:::-;;449:32;;;:::i;393:50::-;;;:::o;908:1866::-;1263:20;;;;;:44;;-1:-1:-1;1287:20:6;;;1263:44;1255:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;1460:19;;;;:42;;-1:-1:-1;1483:19:6;;;1460:42;1452:85;;;;;;;;;;;;:::i;:::-;1548:9;1567:16;1608;1626;1646:51;1673:7;1682:6;1690;1646:26;:51::i;:::-;1607:90;;;;1730:156;1804:15;1821;1854:8;1864;1730:56;:156::i;:::-;1711:175;;-1:-1:-1;1711:175:6;-1:-1:-1;;;1915:12:6;1907:59;;;;;;;;;;;;:::i;:::-;2030:16;2049:4;:38;;2073:14;2049:38;;;2056:14;2049:38;2030:57;;2112:8;2101;:19;2097:69;;;2147:8;2136:19;;2097:69;2176:15;2194:4;:22;;2210:6;2194:22;;;2201:6;2194:22;2176:40;;2226:16;2245:4;:22;;2261:6;2245:22;;;2252:6;2245:22;2226:41;;2277:77;2309:7;2318:10;2338:4;2345:8;2277:31;:77::i;:::-;2364:68;2391:7;2408:12;2423:8;2364:26;:68::i;:::-;2467:16;;;2481:1;2467:16;;;;;;;;2443:21;;2467:16;;;;;;;;;;-1:-1:-1;2467:16:6;2443:40;;2503:7;2493:4;2498:1;2493:7;;;;;;;;;;;;;;;;;;;;;:17;;;;;;;;;;;2530:8;2520:4;2525:1;2520:7;;;;;;;;;;;;;;;;:18;;;;:7;;;;;;;;;:18;2549:218;;;;;:12;:37;;;;;;:218;;2600:8;;2622:1;;2715:4;;2733:2;;2749:8;;2549:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;908:1866;;;;;;;;;;;;;;:::o;449:32::-;;;:::o;1527:429:32:-;1650:16;1668;1697:14;1717:26;1728:6;1736;1717:10;:26::i;:::-;1696:47;;;1754:16;1772;1807:32;1815:7;1824:6;1832;1807:7;:32::i;:::-;1794:58;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1753:101;;;;;;;;;1897:6;1887:16;;:6;:16;;;:62;;1930:8;1940;1887:62;;;1907:8;1917;1887:62;1864:85;;;;-1:-1:-1;1527:429:32;-1:-1:-1;;;;;;;1527:429:32:o;488:890:33:-;673:9;684:16;770:15;759:8;719:39;732:8;742:15;719:12;:39::i;:::-;:48;;;;:::i;:::-;:66;;-1:-1:-1;796:17:33;816:22;:8;829;816:12;:22::i;:::-;796:42;;849:16;868:223;1017:51;1064:3;1018:4;:40;;1043:15;1018:40;;;1025:15;1018:40;1017:46;;:51::i;:::-;891:108;921:19;:9;935:4;921:13;:19::i;:::-;958:4;:40;;983:15;958:40;;;965:15;958:40;891:12;:108::i;:::-;:177;;;;:::i;:::-;868:9;:223::i;:::-;849:242;;1101:17;1172:3;1122:4;:46;;1150:18;:8;1163:4;1150:12;:18::i;:::-;1122:46;;;1129:18;:8;1142:4;1129:12;:18::i;:::-;1121:54;;;;:::i;:::-;1101:74;;1201:9;1190:8;:20;1186:43;;;1220:5;1227:1;1212:17;;;;;;;;;1186:43;1348:23;:8;1361:9;1348:12;:23::i;:::-;1337:34;;488:890;;;;;;;;;;;:::o;1001:439:36:-;1219:12;1233:17;1254:5;:10;;1288;1300:4;1306:2;1310:5;1265:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1254:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:99;;;;1335:7;:57;;;;-1:-1:-1;1347:11:36;;:16;;:44;;;1378:4;1367:24;;;;;;;;;;;;:::i;:::-;1327:106;;;;;;;;;;;;:::i;:::-;1001:439;;;;;;:::o;212:387::-;390:12;404:17;425:5;:10;;459;471:2;475:5;436:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;425:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;389:93;;;;500:7;:57;;;;-1:-1:-1;512:11:36;;:16;;:44;;;543:4;532:24;;;;;;;;;;;;:::i;:::-;492:100;;;;;;;;;;;;:::i;:::-;212:387;;;;;:::o;334:341:32:-;409:14;425;469:6;459:16;;:6;:16;;;;451:64;;;;;;;;;;;;:::i;:::-;553:6;544:15;;:6;:15;;;:53;;582:6;590;544:53;;;563:6;571;544:53;525:72;;-1:-1:-1;525:72:32;-1:-1:-1;615:20:32;;;607:61;;;;;;;;;;;;:::i;:::-;334:341;;;;;:::o;764:708::-;883:12;908:14;924;942:26;953:6;961;942:10;:26::i;:::-;907:61;;;;1178:7;1242:6;1250;1225:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1215:43;;;;;;1095:306;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1060:363;;1095:306;1060:363;;;;;764:708;-1:-1:-1;;;;;;764:708:32:o;458:140:35:-;510:6;536;;;:30;;-1:-1:-1;565:1:35;560;551:5;560:1;565;551:5;:::i;:::-;547:9;-1:-1:-1;546:15:35;;547:9;546:15;:::i;:::-;:20;536:30;528:63;;;;;;;;;;;;:::i;:::-;458:140;;;;:::o;346:292:34:-;391:6;417:1;413;:5;409:223;;;-1:-1:-1;438:1:34;453:6;462:5;466:1;438;462:5;:::i;:::-;:9;;470:1;462:9;:::i;:::-;453:18;;485:89;496:1;492;:5;485:89;;;521:1;-1:-1:-1;521:1:34;558;521;545:5;521:1;545;:5;:::i;:::-;:9;;;;:::i;:::-;544:15;;;;:::i;:::-;540:19;;485:89;;;409:223;;;;594:6;;590:42;;-1:-1:-1;620:1:34;590:42;346:292;;;:::o;325:127:35:-;377:6;418:1;408:5;412:1;418;408:5;:::i;:::-;404:9;;;403:16;;395:50;;;;;;;;;;;;:::i;14:198:38:-;84:20;;144:42;133:54;;123:65;;113:2;;202:1;199;192:12;217:190;298:13;;351:30;340:42;;330:53;;320:2;;397:1;394;387:12;412:695;;;;;;;;;643:3;631:9;622:7;618:23;614:33;611:2;;;665:6;657;650:22;611:2;693:31;714:9;693:31;:::i;:::-;683:41;;743:40;779:2;768:9;764:18;743:40;:::i;:::-;733:50;;830:2;819:9;815:18;802:32;792:42;;881:2;870:9;866:18;853:32;843:42;;932:3;921:9;917:19;904:33;894:43;;984:3;973:9;969:19;956:33;946:43;;1008:41;1044:3;1033:9;1029:19;1008:41;:::i;:::-;998:51;;1096:3;1085:9;1081:19;1068:33;1058:43;;601:506;;;;;;;;;;;:::o;1112:1148::-;;1238:2;1281;1269:9;1260:7;1256:23;1252:32;1249:2;;;1302:6;1294;1287:22;1249:2;1340:9;1334:16;1369:18;1410:2;1402:6;1399:14;1396:2;;;1431:6;1423;1416:22;1396:2;1474:6;1463:9;1459:22;1449:32;;1519:7;1512:4;1508:2;1504:13;1500:27;1490:2;;1546:6;1538;1531:22;1490:2;1580;1574:9;1602:2;1598;1595:10;1592:2;;;1608:18;;:::i;:::-;1655:2;1651;1647:11;1687:2;1681:9;1738:2;1733;1725:6;1721:15;1717:24;1791:6;1779:10;1776:22;1771:2;1759:10;1756:18;1753:46;1750:2;;;1802:18;;:::i;:::-;1838:2;1831:22;1888:18;;;1922:15;;;;-1:-1:-1;1957:11:38;;;1987;;;1983:20;;1980:33;-1:-1:-1;1977:2:38;;;2031:6;2023;2016:22;1977:2;2058:6;2049:15;;2073:156;2087:2;2084:1;2081:9;2073:156;;;2144:10;;2132:23;;2105:1;2098:9;;;;;2175:12;;;;2207;;2073:156;;;-1:-1:-1;2248:6:38;1218:1042;-1:-1:-1;;;;;;;;1218:1042:38:o;2265:297::-;;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2406:6;2398;2391:22;2353:2;2443:9;2437:16;2496:5;2489:13;2482:21;2475:5;2472:32;2462:2;;2523:6;2515;2508:22;2462:2;2551:5;2343:219;-1:-1:-1;;;2343:219:38:o;2567:474::-;;;;2723:2;2711:9;2702:7;2698:23;2694:32;2691:2;;;2744:6;2736;2729:22;2691:2;2772:42;2804:9;2772:42;:::i;:::-;2762:52;;2833:51;2880:2;2869:9;2865:18;2833:51;:::i;:::-;2823:61;;2927:2;2916:9;2912:18;2906:25;2971:10;2964:5;2960:22;2953:5;2950:33;2940:2;;3002:6;2994;2987:22;2940:2;3030:5;3020:15;;;2681:360;;;;;:::o;3046:368::-;3213:66;3308:2;3304:15;;;3300:24;;3288:37;;3359:15;;;;3355:24;3350:2;3341:12;;3334:46;3405:2;3396:12;;3193:221::o;3419:430::-;;3586:6;3580:13;3611:3;3623:129;3637:6;3634:1;3631:13;3623:129;;;3735:4;3719:14;;;3715:25;;3709:32;3696:11;;;3689:53;3652:12;3623:129;;;3770:6;3767:1;3764:13;3761:2;;;3805:3;3796:6;3791:3;3787:16;3780:29;3761:2;-1:-1:-1;3827:16:38;;;;;3556:293;-1:-1:-1;;3556:293:38:o;3854:724::-;4225:66;4213:79;;4329:2;4325:15;;;;4342:66;4321:88;4317:1;4308:11;;4301:109;4435:2;4426:12;;4419:28;4477:66;4472:2;4463:12;;4456:88;4569:2;4560:12;;4203:375::o;4583:226::-;4759:42;4747:55;;;;4729:74;;4717:2;4702:18;;4684:125::o;4814:398::-;5026:42;5095:15;;;5077:34;;5147:15;;;;5142:2;5127:18;;5120:43;5194:2;5179:18;;5172:34;;;;5004:2;4989:18;;4971:241::o;5217:297::-;5421:42;5409:55;;;;5391:74;;5496:2;5481:18;;5474:34;5379:2;5364:18;;5346:168::o;5779:345::-;5981:2;5963:21;;;6020:2;6000:18;;;5993:30;6059:23;6054:2;6039:18;;6032:51;6115:2;6100:18;;5953:171::o;6129:354::-;6331:2;6313:21;;;6370:2;6350:18;;;6343:30;6409:32;6404:2;6389:18;;6382:60;6474:2;6459:18;;6303:180::o;6488:344::-;6690:2;6672:21;;;6729:2;6709:18;;;6702:30;6768:22;6763:2;6748:18;;6741:50;6823:2;6808:18;;6662:170::o;6837:354::-;7039:2;7021:21;;;7078:2;7058:18;;;7051:30;7117:32;7112:2;7097:18;;7090:60;7182:2;7167:18;;7011:180::o;7196:354::-;7398:2;7380:21;;;7437:2;7417:18;;;7410:30;7476:32;7471:2;7456:18;;7449:60;7541:2;7526:18;;7370:180::o;7555:399::-;7757:2;7739:21;;;7796:2;7776:18;;;7769:30;7835:34;7830:2;7815:18;;7808:62;7906:5;7901:2;7886:18;;7879:33;7944:3;7929:19;;7729:225::o;7959:398::-;8161:2;8143:21;;;8200:2;8180:18;;;8173:30;8239:34;8234:2;8219:18;;8212:62;8310:4;8305:2;8290:18;;8283:32;8347:3;8332:19;;8133:224::o;8362:400::-;8564:2;8546:21;;;8603:2;8583:18;;;8576:30;8642:34;8637:2;8622:18;;8615:62;8713:6;8708:2;8693:18;;8686:34;8752:3;8737:19;;8536:226::o;8767:352::-;8969:2;8951:21;;;9008:2;8988:18;;;8981:30;9047;9042:2;9027:18;;9020:58;9110:2;9095:18;;8941:178::o;9124:1029::-;;9434:3;9423:9;9419:19;9465:6;9454:9;9447:25;9491:2;9529:6;9524:2;9513:9;9509:18;9502:34;9572:3;9567:2;9556:9;9552:18;9545:31;9596:6;9631;9625:13;9662:6;9654;9647:22;9700:3;9689:9;9685:19;9678:26;;9739:2;9731:6;9727:15;9713:29;;9760:4;9773:218;9787:6;9784:1;9781:13;9773:218;;;9852:13;;9867:42;9848:62;9836:75;;9966:15;;;;9931:12;;;;9809:1;9802:9;9773:218;;;-1:-1:-1;;10059:42:38;10047:55;;;;10042:2;10027:18;;10020:83;-1:-1:-1;;;10134:3:38;10119:19;10112:35;10008:3;9395:758;-1:-1:-1;;;9395:758:38:o;10158:128::-;;10229:1;10225:6;10222:1;10219:13;10216:2;;;10235:18;;:::i;:::-;-1:-1:-1;10271:9:38;;10206:80::o;10291:274::-;;10357:1;10347:2;;10392:77;10389:1;10382:88;10493:4;10490:1;10483:15;10521:4;10518:1;10511:15;10347:2;-1:-1:-1;10550:9:38;;10337:228::o;10570:::-;;10736:1;10668:66;10664:74;10661:1;10658:81;10653:1;10646:9;10639:17;10635:105;10632:2;;;10743:18;;:::i;:::-;-1:-1:-1;10783:9:38;;10622:176::o;10803:125::-;;10871:1;10868;10865:8;10862:2;;;10876:18;;:::i;:::-;-1:-1:-1;10913:9:38;;10852:76::o;10933:184::-;10985:77;10982:1;10975:88;11082:4;11079:1;11072:15;11106:4;11103:1;11096:15;11122:184;11174:77;11171:1;11164:88;11271:4;11268:1;11261:15;11295:4;11292:1;11285:15"
    },
    "contracts/interfaces/IBaseTokenData.sol:IBaseTokenData": {
      "abi": [
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaseTokenData.sol\":\"IBaseTokenData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IDoubleProxy.sol:IDoubleProxy": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "proxyList",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "currentProxy",
              "type": "address"
            }
          ],
          "name": "init",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "isProxy",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "proxies",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "",
              "type": "address[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "start",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "offset",
              "type": "uint256"
            }
          ],
          "name": "proxies",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "",
              "type": "address[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "proxiesLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "proxy",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "setProxy",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"proxyList\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"currentProxy\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isProxy\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"proxies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiesLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IDoubleProxy.sol\":\"IDoubleProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IDoubleProxy.sol\":{\"keccak256\":\"0xb3775ff336d8ca9e0f7cb3b7e7c322d96c6360b53ec4a3ce45c6540d4f0126a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://6ec1948724904ecf9185f960548865d20a13969a840c926e9162e4bb354d18f6\",\"dweb:/ipfs/QmXbRyhfnW3E4Mij5y8v9JfHVB2vqxxwDgNfvHeu3wHiHJ\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IERC1155.sol:IERC1155": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "ApprovalForAll",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "values",
              "type": "uint256[]"
            }
          ],
          "name": "TransferBatch",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "TransferSingle",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "value",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "URI",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "accounts",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            }
          ],
          "name": "balanceOfBatch",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            }
          ],
          "name": "isApprovedForAll",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "safeBatchTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "safeTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "setApprovalForAll",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "interfaceId",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC1155.sol\":\"IERC1155\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IERC1155Receiver.sol:IERC1155Receiver": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "values",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "onERC1155BatchReceived",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "onERC1155Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"_Available since v3.1._\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC1155Receiver.sol\":\"IERC1155Receiver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IERC1155Views.sol:IERC1155Views": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "uri",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This interface introduces some additional capabilities for ERC-1155 Tokens.\",\"kind\":\"dev\",\"methods\":{\"decimals(uint256)\":{\"details\":\"Returns the decimals of the given token id\",\"params\":{\"objectId\":\"the id of the token whose decimals you want to know \"}},\"name(uint256)\":{\"details\":\"Returns the name of the given token id\",\"params\":{\"objectId\":\"the id of the token whose name you want to know \"}},\"symbol(uint256)\":{\"details\":\"Returns the symbol of the given token id\",\"params\":{\"objectId\":\"the id of the token whose symbol you want to know \"}},\"totalSupply(uint256)\":{\"details\":\"Returns the total supply of the given token id\",\"params\":{\"objectId\":\"the id of the token whose availability you want to know \"}},\"uri(uint256)\":{\"details\":\"Returns the uri of the given token id\",\"params\":{\"objectId\":\"the id of the token whose uri you want to know \"}}},\"title\":\"IERC1155Views - An optional utility interface to improve the ERC-1155 Standard.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC1155Views.sol\":\"IERC1155Views\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IERC165.sol:IERC165": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "interfaceId",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IERC20.sol:IERC20": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IERC20Data.sol:IERC20Data": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC20Data.sol\":\"IERC20Data\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IERC20WrapperV1.sol:IERC20WrapperV1": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "ApprovalForAll",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            }
          ],
          "name": "NewItem",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "values",
              "type": "uint256[]"
            }
          ],
          "name": "TransferBatch",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "TransferSingle",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "value",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "URI",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "asInteroperable",
          "outputs": [
            {
              "internalType": "contract IEthItemInteroperableInterface",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "accounts",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            }
          ],
          "name": "balanceOfBatch",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "burn",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "objectIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "name": "burnBatch",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "emitTransferSingleEvent",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "factoryAddress",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            }
          ],
          "name": "init",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "interfaceModel",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            }
          ],
          "name": "init",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "interoperableInterfaceModel",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            }
          ],
          "name": "isApprovedForAll",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "mainInterfaceVersion",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "ethItemInteroperableVersion",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "erc20TokenAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "wrapperAddress",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "partialUri",
              "type": "string"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "mintETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "wrapperAddress",
              "type": "address"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "modelVersion",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "modelVersionNumber",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "erc20TokenAddress",
              "type": "address"
            }
          ],
          "name": "object",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "safeBatchTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "safeTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "setApprovalForAll",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "source",
          "outputs": [
            {
              "internalType": "address",
              "name": "erc20TokenAddress",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "interfaceId",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ethItemAmount",
              "type": "uint256"
            }
          ],
          "name": "toInteroperableInterfaceAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "interoperableInterfaceAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "erc20WrapperAmount",
              "type": "uint256"
            }
          ],
          "name": "toMainInterfaceAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "mainInterfaceAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "uri",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"NewItem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"asInteroperable\",\"outputs\":[{\"internalType\":\"contract IEthItemInteroperableInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"objectIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emitTransferSingleEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"factoryAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"interfaceModel\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"interoperableInterfaceModel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mainInterfaceVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ethItemInteroperableVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20TokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"wrapperAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"partialUri\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"wrapperAddress\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"modelVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"modelVersionNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20TokenAddress\",\"type\":\"address\"}],\"name\":\"object\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"source\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"erc20TokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethItemAmount\",\"type\":\"uint256\"}],\"name\":\"toInteroperableInterfaceAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"interoperableInterfaceAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"erc20WrapperAmount\",\"type\":\"uint256\"}],\"name\":\"toMainInterfaceAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"mainInterfaceAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All the wrapped ERC20 Tokens will be created following this Model. The minting operation can be done by calling the appropriate method given in this interface. The burning operation will send back the original wrapped ERC20 amount. To initalize it, the original 'init(address,string,string)' function of the EthItem Token Standard will be used, but the first address parameter will be the original ERC20 Source Contract to Wrap, and NOT the ERC20Model, which is always taken by the Contract who creates the Wrapper.\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"decimals(uint256)\":{\"details\":\"Returns the decimals of the given token id\",\"params\":{\"objectId\":\"the id of the token whose decimals you want to know \"}},\"factory()\":{\"returns\":{\"factoryAddress\":\"the address of the Contract which initialized this EthItem\"}},\"init(string,string)\":{\"details\":\"Contract Initialization, the caller of this method should be a Contract containing the logic to provide the EthItemERC20WrapperModel to be used to create ERC20-based objectIds\",\"params\":{\"name\":\"the chosen name for this NFT\",\"symbol\":\"the chosen symbol (Ticker) for this NFT\"}},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"mint(address,uint256)\":{\"details\":\"Mint operation. It inhibits and bypasses the original EthItem Token Standard 'mint(uint256,string)'. The logic will execute a transferFrom call to the given erc20TokenAddress to transfer the chosed amount of tokens\",\"params\":{\"amount\":\"The token amount to wrap\",\"erc20TokenAddress\":\"The token address to wrap.\"},\"returns\":{\"objectId\":\"the id given by this collection to the given erc20TokenAddress. It can be brand new if it is the first time this collection is created. Otherwhise, the firstly-created objectId value will be used.\",\"wrapperAddress\":\"The address ethItemERC20Wrapper generated after the creation of the returned objectId\"}},\"modelVersion()\":{\"returns\":{\"modelVersionNumber\":\"The version number of the Model, it should be progressive\"}},\"name(uint256)\":{\"details\":\"Returns the name of the given token id\",\"params\":{\"objectId\":\"the id of the token whose name you want to know \"}},\"object(address)\":{\"params\":{\"erc20TokenAddress\":\"the wrapped ERC20 Token address you want to know info about\"},\"returns\":{\"objectId\":\"the id in the collection which correspondes to the given erc20TokenAddress\"}},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"source(uint256)\":{\"params\":{\"objectId\":\"the Object Id you want to know info about\"},\"returns\":{\"erc20TokenAddress\":\"the wrapped ERC20 Token address corresponding to the given objectId\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol(uint256)\":{\"details\":\"Returns the symbol of the given token id\",\"params\":{\"objectId\":\"the id of the token whose symbol you want to know \"}},\"totalSupply(uint256)\":{\"details\":\"Returns the total supply of the given token id\",\"params\":{\"objectId\":\"the id of the token whose availability you want to know \"}},\"uri(uint256)\":{\"details\":\"Returns the uri of the given token id\",\"params\":{\"objectId\":\"the id of the token whose uri you want to know \"}}},\"title\":\"ERC20-Based EthItem, version 1.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC20WrapperV1.sol\":\"IERC20WrapperV1\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IERC20WrapperV1.sol\":{\"keccak256\":\"0xb11ab8431790ecf02d6380277e277a1e44fcf1cbc81973301149e7080157ea4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b5dfc1840e8834ba39b1a634fdc2ba67d250adc4f8540f0ee33e16439ccb9cd\",\"dweb:/ipfs/QmTyF4vz44kcYuLuZAEW7tBxWuMiNZAojDKopi8oeudgk3\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]},\"contracts/interfaces/IEthItemMainInterface.sol\":{\"keccak256\":\"0x1bc85f4e88618a2d75910da856d5d43a87213463dae57054b44aa0e2220c43e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12240288d6503024c37ad756722f451ad3d819affd30b9d54ca0e06942c414b0\",\"dweb:/ipfs/QmU1hLcanobgXgEEXbbA56YPob23ghDXXqjK7gCCXbj3mT\"]},\"contracts/interfaces/IEthItemModelBase.sol\":{\"keccak256\":\"0x2ef4d851f1127e58dc496490f84ebe5690bff39c48a0ff43338d0087e3b114da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7db0efdf2c2c6c758fa12146e9aa31ebe1fc7b1eaa36d644ada5a7696b22c627\",\"dweb:/ipfs/QmXP62zz7qHJtQfxNRoxPsPiJxhXTKaKRfjCHGxetwgYyV\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IERC721Receiver.sol:IERC721Receiver": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "onERC721Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC721Receiver.sol\":{\"keccak256\":\"0xe1af177b51620da96b7e597c44176bf11b75fb9c5d3783791a015161b82835aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9896a66287f723c4ae6f6b9943e32b065416257a9f40c6a1921734e6a000f6cb\",\"dweb:/ipfs/QmT9X2aHethhwZprdsDbgEqXdJGQ9WAqFF4yD5L42wGhup\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IEthItemInteroperableInterface.sol:IEthItemInteroperableInterface": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "burn",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "decimals",
              "type": "uint256"
            }
          ],
          "name": "init",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "interoperableInterfaceVersion",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "ethItemInteroperableInterfaceVersion",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "mainInterface",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "mint",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "objectId",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "permitNonce",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"interoperableInterfaceVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ethItemInteroperableInterfaceVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mainInterface\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"objectId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"permitNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IEthItemInteroperableInterface.sol\":\"IEthItemInteroperableInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IEthItemMainInterface.sol:IEthItemMainInterface": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "ApprovalForAll",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            }
          ],
          "name": "NewItem",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "values",
              "type": "uint256[]"
            }
          ],
          "name": "TransferBatch",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "TransferSingle",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "value",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "URI",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "asInteroperable",
          "outputs": [
            {
              "internalType": "contract IEthItemInteroperableInterface",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "accounts",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            }
          ],
          "name": "balanceOfBatch",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "burn",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "objectIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "name": "burnBatch",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "emitTransferSingleEvent",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "interfaceModel",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            }
          ],
          "name": "init",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "interoperableInterfaceModel",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            }
          ],
          "name": "isApprovedForAll",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "mainInterfaceVersion",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "ethItemInteroperableVersion",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "partialUri",
              "type": "string"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "safeBatchTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "safeTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "setApprovalForAll",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "interfaceId",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ethItemAmount",
              "type": "uint256"
            }
          ],
          "name": "toInteroperableInterfaceAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "interoperableInterfaceAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "erc20WrapperAmount",
              "type": "uint256"
            }
          ],
          "name": "toMainInterfaceAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "mainInterfaceAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "uri",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"NewItem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"asInteroperable\",\"outputs\":[{\"internalType\":\"contract IEthItemInteroperableInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"objectIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emitTransferSingleEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"interfaceModel\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"interoperableInterfaceModel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mainInterfaceVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ethItemInteroperableVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"partialUri\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethItemAmount\",\"type\":\"uint256\"}],\"name\":\"toInteroperableInterfaceAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"interoperableInterfaceAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"erc20WrapperAmount\",\"type\":\"uint256\"}],\"name\":\"toMainInterfaceAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"mainInterfaceAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"decimals(uint256)\":{\"details\":\"Returns the decimals of the given token id\",\"params\":{\"objectId\":\"the id of the token whose decimals you want to know \"}},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"name(uint256)\":{\"details\":\"Returns the name of the given token id\",\"params\":{\"objectId\":\"the id of the token whose name you want to know \"}},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol(uint256)\":{\"details\":\"Returns the symbol of the given token id\",\"params\":{\"objectId\":\"the id of the token whose symbol you want to know \"}},\"totalSupply(uint256)\":{\"details\":\"Returns the total supply of the given token id\",\"params\":{\"objectId\":\"the id of the token whose availability you want to know \"}},\"uri(uint256)\":{\"details\":\"Returns the uri of the given token id\",\"params\":{\"objectId\":\"the id of the token whose uri you want to know \"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IEthItemMainInterface.sol\":\"IEthItemMainInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]},\"contracts/interfaces/IEthItemMainInterface.sol\":{\"keccak256\":\"0x1bc85f4e88618a2d75910da856d5d43a87213463dae57054b44aa0e2220c43e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12240288d6503024c37ad756722f451ad3d819affd30b9d54ca0e06942c414b0\",\"dweb:/ipfs/QmU1hLcanobgXgEEXbbA56YPob23ghDXXqjK7gCCXbj3mT\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IEthItemModelBase.sol:IEthItemModelBase": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "ApprovalForAll",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            }
          ],
          "name": "NewItem",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "values",
              "type": "uint256[]"
            }
          ],
          "name": "TransferBatch",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "TransferSingle",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "value",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "URI",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "asInteroperable",
          "outputs": [
            {
              "internalType": "contract IEthItemInteroperableInterface",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "accounts",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            }
          ],
          "name": "balanceOfBatch",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "burn",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "objectIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "name": "burnBatch",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "emitTransferSingleEvent",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "factoryAddress",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            }
          ],
          "name": "init",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "interfaceModel",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            }
          ],
          "name": "init",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "interoperableInterfaceModel",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            }
          ],
          "name": "isApprovedForAll",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "mainInterfaceVersion",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "ethItemInteroperableVersion",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "partialUri",
              "type": "string"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "modelVersion",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "modelVersionNumber",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "safeBatchTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "safeTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "setApprovalForAll",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "interfaceId",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ethItemAmount",
              "type": "uint256"
            }
          ],
          "name": "toInteroperableInterfaceAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "interoperableInterfaceAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "erc20WrapperAmount",
              "type": "uint256"
            }
          ],
          "name": "toMainInterfaceAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "mainInterfaceAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "uri",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"NewItem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"asInteroperable\",\"outputs\":[{\"internalType\":\"contract IEthItemInteroperableInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"objectIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emitTransferSingleEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"factoryAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"interfaceModel\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"interoperableInterfaceModel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mainInterfaceVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ethItemInteroperableVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"partialUri\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"modelVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"modelVersionNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethItemAmount\",\"type\":\"uint256\"}],\"name\":\"toInteroperableInterfaceAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"interoperableInterfaceAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"erc20WrapperAmount\",\"type\":\"uint256\"}],\"name\":\"toMainInterfaceAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"mainInterfaceAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This interface contains the commonn data provided by all the EthItem models\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"decimals(uint256)\":{\"details\":\"Returns the decimals of the given token id\",\"params\":{\"objectId\":\"the id of the token whose decimals you want to know \"}},\"factory()\":{\"returns\":{\"factoryAddress\":\"the address of the Contract which initialized this EthItem\"}},\"init(string,string)\":{\"details\":\"Contract Initialization, the caller of this method should be a Contract containing the logic to provide the EthItemERC20WrapperModel to be used to create ERC20-based objectIds\",\"params\":{\"name\":\"the chosen name for this NFT\",\"symbol\":\"the chosen symbol (Ticker) for this NFT\"}},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"modelVersion()\":{\"returns\":{\"modelVersionNumber\":\"The version number of the Model, it should be progressive\"}},\"name(uint256)\":{\"details\":\"Returns the name of the given token id\",\"params\":{\"objectId\":\"the id of the token whose name you want to know \"}},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol(uint256)\":{\"details\":\"Returns the symbol of the given token id\",\"params\":{\"objectId\":\"the id of the token whose symbol you want to know \"}},\"totalSupply(uint256)\":{\"details\":\"Returns the total supply of the given token id\",\"params\":{\"objectId\":\"the id of the token whose availability you want to know \"}},\"uri(uint256)\":{\"details\":\"Returns the uri of the given token id\",\"params\":{\"objectId\":\"the id of the token whose uri you want to know \"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IEthItemModelBase.sol\":\"IEthItemModelBase\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]},\"contracts/interfaces/IEthItemMainInterface.sol\":{\"keccak256\":\"0x1bc85f4e88618a2d75910da856d5d43a87213463dae57054b44aa0e2220c43e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12240288d6503024c37ad756722f451ad3d819affd30b9d54ca0e06942c414b0\",\"dweb:/ipfs/QmU1hLcanobgXgEEXbbA56YPob23ghDXXqjK7gCCXbj3mT\"]},\"contracts/interfaces/IEthItemModelBase.sol\":{\"keccak256\":\"0x2ef4d851f1127e58dc496490f84ebe5690bff39c48a0ff43338d0087e3b114da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7db0efdf2c2c6c758fa12146e9aa31ebe1fc7b1eaa36d644ada5a7696b22c627\",\"dweb:/ipfs/QmXP62zz7qHJtQfxNRoxPsPiJxhXTKaKRfjCHGxetwgYyV\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IEthItemOrchestrator.sol:IEthItemOrchestrator": {
      "abi": [
        {
          "inputs": [],
          "name": "ENSController",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes",
              "name": "modelInitPayload",
              "type": "bytes"
            }
          ],
          "name": "createERC20Wrapper",
          "outputs": [
            {
              "internalType": "address",
              "name": "newEthItemAddress",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "modelInitCallResponse",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes",
              "name": "modelInitPayload",
              "type": "bytes"
            },
            {
              "internalType": "string",
              "name": "ens",
              "type": "string"
            }
          ],
          "name": "createNative",
          "outputs": [
            {
              "internalType": "address",
              "name": "newNativeAddress",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "modelInitCallResponse",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "doubleProxy",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factories",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "",
              "type": "address[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "knowledgeBase",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "knowledgeBases",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "",
              "type": "address[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "values",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "onERC1155BatchReceived",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "onERC1155Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "onERC721Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "burnFeePercentageNumerator",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "burnFeePercentageDenominator",
              "type": "uint256"
            }
          ],
          "name": "setBurnFeePercentage",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newDoubleProxy",
              "type": "address"
            }
          ],
          "name": "setDoubleProxy",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newEnsController",
              "type": "address"
            }
          ],
          "name": "setENSController",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "erc1155WrapperModelAddress",
              "type": "address"
            }
          ],
          "name": "setERC1155WrapperModel",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "erc20WrapperModelAddress",
              "type": "address"
            }
          ],
          "name": "setERC20WrapperModel",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "erc721WrapperModelAddress",
              "type": "address"
            }
          ],
          "name": "setERC721WrapperModel",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "ethItemInteroperableInterfaceModelAddress",
              "type": "address"
            }
          ],
          "name": "setEthItemInteroperableInterfaceModel",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newFactory",
              "type": "address"
            }
          ],
          "name": "setFactory",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newKnowledgeBase",
              "type": "address"
            }
          ],
          "name": "setKnowledgeBase",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "mintFeePercentageNumerator",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "mintFeePercentageDenominator",
              "type": "uint256"
            }
          ],
          "name": "setMintFeePercentage",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "nativeModelAddress",
              "type": "address"
            }
          ],
          "name": "setNativeModel",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "domainNode",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "domainId",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "reclaimFirst",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "safeTransferFrom",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "payload",
              "type": "bytes"
            }
          ],
          "name": "transferENS",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ENSController\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"modelInitPayload\",\"type\":\"bytes\"}],\"name\":\"createERC20Wrapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newEthItemAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"modelInitCallResponse\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"modelInitPayload\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"ens\",\"type\":\"string\"}],\"name\":\"createNative\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newNativeAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"modelInitCallResponse\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"doubleProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factories\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"knowledgeBase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"knowledgeBases\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"burnFeePercentageNumerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnFeePercentageDenominator\",\"type\":\"uint256\"}],\"name\":\"setBurnFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newDoubleProxy\",\"type\":\"address\"}],\"name\":\"setDoubleProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newEnsController\",\"type\":\"address\"}],\"name\":\"setENSController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc1155WrapperModelAddress\",\"type\":\"address\"}],\"name\":\"setERC1155WrapperModel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20WrapperModelAddress\",\"type\":\"address\"}],\"name\":\"setERC20WrapperModel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc721WrapperModelAddress\",\"type\":\"address\"}],\"name\":\"setERC721WrapperModel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"ethItemInteroperableInterfaceModelAddress\",\"type\":\"address\"}],\"name\":\"setEthItemInteroperableInterfaceModel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newFactory\",\"type\":\"address\"}],\"name\":\"setFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newKnowledgeBase\",\"type\":\"address\"}],\"name\":\"setKnowledgeBase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintFeePercentageNumerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintFeePercentageDenominator\",\"type\":\"uint256\"}],\"name\":\"setMintFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeModelAddress\",\"type\":\"address\"}],\"name\":\"setNativeModel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"domainNode\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"domainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"reclaimFirst\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"safeTransferFrom\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"transferENS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"doubleProxy()\":{\"details\":\"GET - The DoubleProxy of the DFO linked to this Contract\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\"},\"setBurnFeePercentage(uint256,uint256)\":{\"details\":\"SET - The element useful to calculate the Percentage fee It can be done only through a Proposal in the Linked DFO\"},\"setDoubleProxy(address)\":{\"details\":\"SET - The DoubleProxy of the DFO linked to this Contract It can be done only through a Proposal in the Linked DFO\",\"params\":{\"newDoubleProxy\":\"the new DoubleProxy address\"}},\"setERC1155WrapperModel(address)\":{\"details\":\"SET - The address of the ERC1155 NFT-Based EthItem model. It can be done only through a Proposal in the Linked DFO\"},\"setERC20WrapperModel(address)\":{\"details\":\"SET - The address of the Smart Contract whose code will serve as a model for all the Wrapped ERC20 EthItems. It can be done only through a Proposal in the Linked DFO\"},\"setERC721WrapperModel(address)\":{\"details\":\"SET - The address of the Smart Contract whose code will serve as a model for all the Wrapped ERC721 EthItems. It can be done only through a Proposal in the Linked DFO\"},\"setEthItemInteroperableInterfaceModel(address)\":{\"details\":\"SET - The address of the Smart Contract whose code will serve as a model for all the EthItemERC20Wrappers (please see the eth-item-token-standard for further information). It can be done only through a Proposal in the Linked DFO\"},\"setMintFeePercentage(uint256,uint256)\":{\"details\":\"SET - The element useful to calculate the Percentage fee It can be done only through a Proposal in the Linked DFO\"},\"setNativeModel(address)\":{\"details\":\"SET - The address of the Native EthItem model. It can be done only through a Proposal in the Linked DFO\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IEthItemOrchestrator.sol\":\"IEthItemOrchestrator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IDoubleProxy.sol\":{\"keccak256\":\"0xb3775ff336d8ca9e0f7cb3b7e7c322d96c6360b53ec4a3ce45c6540d4f0126a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://6ec1948724904ecf9185f960548865d20a13969a840c926e9162e4bb354d18f6\",\"dweb:/ipfs/QmXbRyhfnW3E4Mij5y8v9JfHVB2vqxxwDgNfvHeu3wHiHJ\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC721Receiver.sol\":{\"keccak256\":\"0xe1af177b51620da96b7e597c44176bf11b75fb9c5d3783791a015161b82835aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9896a66287f723c4ae6f6b9943e32b065416257a9f40c6a1921734e6a000f6cb\",\"dweb:/ipfs/QmT9X2aHethhwZprdsDbgEqXdJGQ9WAqFF4yD5L42wGhup\"]},\"contracts/interfaces/IEthItemOrchestrator.sol\":{\"keccak256\":\"0x184776ee5b19243194b778005c78d77679c155563be2bf2e2acdc9a753825fa0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://509b080d0dc91db777ca7971e92e1fc04ecf787f0bd657960934cd07236541fa\",\"dweb:/ipfs/QmaYobBY8oAYmH61u7rucuSzJADABQhwSGQSkTEjhNyNFm\"]},\"contracts/interfaces/IMVDFunctionalitiesManager.sol\":{\"keccak256\":\"0x050d033b3f1926ad9e2c4f0fbe7f90f81329031bc20f74a3763f94807ebbe1c9\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://ff6127103e5d260211c12c4724885a0ef94af693ca66f153d790bd362bbcc75e\",\"dweb:/ipfs/QmPWzoX8mm18cbLGtuybLpEkUWd4cPD6yYtLnTdUeWKMXQ\"]},\"contracts/interfaces/IMVDProxy.sol\":{\"keccak256\":\"0x4ec6db71aadf5a452fb98805e8d8652ab24251146f3d99c4438948f2b2c7d08d\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://0f2f95f6c40623a9d90932d2c9ae3e931cabb2704447db8148f33beebc2c69d3\",\"dweb:/ipfs/QmfAXd4ZG8HKisCQPCu9Kx237fomRLUB7UBN43t3bFjoCY\"]},\"contracts/interfaces/IStateHolder.sol\":{\"keccak256\":\"0x3560acebbd333d1d36f904784df4111e9354e4f8094710322e1fcfbcb5f8f167\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://adaf7d8aff81a82a4130890e7c459c7e27b448e3a35a21fd74f5d3b7e2183a24\",\"dweb:/ipfs/QmSjnsyaV3zrFA9YHut4KgHQMnqcq3BonprBg7ysuoKybf\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IEthItemOrchestratorDependantElement.sol:IEthItemOrchestratorDependantElement": {
      "abi": [
        {
          "inputs": [],
          "name": "doubleProxy",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            }
          ],
          "name": "isAuthorizedOrchestrator",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newDoubleProxy",
              "type": "address"
            }
          ],
          "name": "setDoubleProxy",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "interfaceId",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"doubleProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isAuthorizedOrchestrator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newDoubleProxy\",\"type\":\"address\"}],\"name\":\"setDoubleProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"doubleProxy()\":{\"details\":\"GET - The DoubleProxy of the DFO linked to this Contract\"},\"setDoubleProxy(address)\":{\"details\":\"SET - The DoubleProxy of the DFO linked to this Contract It can be done only by the Factory controller\",\"params\":{\"newDoubleProxy\":\"the new DoubleProxy address\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IEthItemOrchestratorDependantElement.sol\":\"IEthItemOrchestratorDependantElement\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IEthItemOrchestratorDependantElement.sol\":{\"keccak256\":\"0x87d71a0eaa12d94a86f58873f0056c34cfca791de4526cffa914b91b853a89d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9b0e575d297e39bb37d542c06c6bc29c480f3f36a7bf5738f26a2dd206573a1\",\"dweb:/ipfs/QmU9Y6uMvx2KAgoFPqVhSxemnqVmh3yeTJQ7E6xW6Az96o\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IKnowledgeBase.sol:IKnowledgeBase": {
      "abi": [
        {
          "inputs": [],
          "name": "doubleProxy",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "erc20Wrapper",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "erc20Wrappers",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "",
              "type": "address[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            }
          ],
          "name": "isAuthorizedOrchestrator",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "ethItem",
              "type": "address"
            }
          ],
          "name": "isEthItem",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newDoubleProxy",
              "type": "address"
            }
          ],
          "name": "setDoubleProxy",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newWrapper",
              "type": "address"
            }
          ],
          "name": "setERC20Wrapper",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "ethItem",
              "type": "address"
            }
          ],
          "name": "setEthItem",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "wrappedAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "ethItem",
              "type": "address"
            }
          ],
          "name": "setWrapped",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "interfaceId",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "wrappedAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "version",
              "type": "uint256"
            }
          ],
          "name": "wrapper",
          "outputs": [
            {
              "internalType": "address",
              "name": "ethItem",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"doubleProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20Wrapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20Wrappers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isAuthorizedOrchestrator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"ethItem\",\"type\":\"address\"}],\"name\":\"isEthItem\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newDoubleProxy\",\"type\":\"address\"}],\"name\":\"setDoubleProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newWrapper\",\"type\":\"address\"}],\"name\":\"setERC20Wrapper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"ethItem\",\"type\":\"address\"}],\"name\":\"setEthItem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wrappedAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethItem\",\"type\":\"address\"}],\"name\":\"setWrapped\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wrappedAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"wrapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"ethItem\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract represents the Factory Used to deploy all the EthItems, keeping track of them.\",\"kind\":\"dev\",\"methods\":{\"doubleProxy()\":{\"details\":\"GET - The DoubleProxy of the DFO linked to this Contract\"},\"setDoubleProxy(address)\":{\"details\":\"SET - The DoubleProxy of the DFO linked to this Contract It can be done only by the Factory controller\",\"params\":{\"newDoubleProxy\":\"the new DoubleProxy address\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"IKnowledgeBase\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IKnowledgeBase.sol\":\"IKnowledgeBase\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IEthItemOrchestratorDependantElement.sol\":{\"keccak256\":\"0x87d71a0eaa12d94a86f58873f0056c34cfca791de4526cffa914b91b853a89d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9b0e575d297e39bb37d542c06c6bc29c480f3f36a7bf5738f26a2dd206573a1\",\"dweb:/ipfs/QmU9Y6uMvx2KAgoFPqVhSxemnqVmh3yeTJQ7E6xW6Az96o\"]},\"contracts/interfaces/IKnowledgeBase.sol\":{\"keccak256\":\"0x86da28eb1397f37b4fcd412124a4ee2d39f9fa67acf9d5e650018cbef787e41f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ffdc43407b8c1999ce1a3044f7c7c1f1d54e0a2eb87bd46f2be51fb542c675f2\",\"dweb:/ipfs/QmTLtqcfvekEQ6NKbNtz9K1nCVVoM9bFSEgn7qtqupZt4J\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IMVDFunctionalitiesManager.sol:IMVDFunctionalitiesManager": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "codeName",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "sourceLocation",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "sourceLocationId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "location",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "submitable",
              "type": "bool"
            },
            {
              "internalType": "string",
              "name": "methodSignature",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "returnAbiParametersArray",
              "type": "string"
            },
            {
              "internalType": "bool",
              "name": "isInternal",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "needsSender",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "position",
              "type": "uint256"
            }
          ],
          "name": "addFunctionality",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "codeName",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "sourceLocation",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "sourceLocationId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "location",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "submitable",
              "type": "bool"
            },
            {
              "internalType": "string",
              "name": "methodSignature",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "returnAbiParametersArray",
              "type": "string"
            },
            {
              "internalType": "bool",
              "name": "isInternal",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "needsSender",
              "type": "bool"
            }
          ],
          "name": "addFunctionality",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "clearCallingContext",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "functionalitiesToJSON",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "start",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "l",
              "type": "uint256"
            }
          ],
          "name": "functionalitiesToJSON",
          "outputs": [
            {
              "internalType": "string",
              "name": "functionsJSONArray",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "functionalityNames",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "start",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "l",
              "type": "uint256"
            }
          ],
          "name": "functionalityNames",
          "outputs": [
            {
              "internalType": "string",
              "name": "functionsJSONArray",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "codeName",
              "type": "string"
            }
          ],
          "name": "functionalityToJSON",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getFunctionalitiesAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "codeName",
              "type": "string"
            }
          ],
          "name": "getFunctionalityData",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getProxy",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "codeName",
              "type": "string"
            }
          ],
          "name": "hasFunctionality",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sourceLocation",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "getMinimumBlockNumberSourceLocationId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "getMinimumBlockNumberFunctionalityAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "getEmergencyMinimumBlockNumberSourceLocationId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "getEmergencyMinimumBlockNumberFunctionalityAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "getEmergencySurveyStakingSourceLocationId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "getEmergencySurveyStakingFunctionalityAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "checkVoteResultSourceLocationId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "checkVoteResultFunctionalityAddress",
              "type": "address"
            }
          ],
          "name": "init",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "functionality",
              "type": "address"
            }
          ],
          "name": "isAuthorizedFunctionality",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "functionality",
              "type": "address"
            }
          ],
          "name": "isValidFunctionality",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "codeName",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint8",
              "name": "submitable",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "preConditionCheck",
          "outputs": [
            {
              "internalType": "address",
              "name": "location",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "payload",
              "type": "bytes"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "codeName",
              "type": "string"
            }
          ],
          "name": "removeFunctionality",
          "outputs": [
            {
              "internalType": "bool",
              "name": "removed",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "position",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "location",
              "type": "address"
            }
          ],
          "name": "setCallingContext",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "setProxy",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "proposalAddress",
              "type": "address"
            }
          ],
          "name": "setupFunctionality",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"codeName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"sourceLocation\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceLocationId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"location\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"submitable\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"returnAbiParametersArray\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"isInternal\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"needsSender\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"position\",\"type\":\"uint256\"}],\"name\":\"addFunctionality\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"codeName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"sourceLocation\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceLocationId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"location\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"submitable\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"returnAbiParametersArray\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"isInternal\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"needsSender\",\"type\":\"bool\"}],\"name\":\"addFunctionality\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearCallingContext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"functionalitiesToJSON\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l\",\"type\":\"uint256\"}],\"name\":\"functionalitiesToJSON\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"functionsJSONArray\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"functionalityNames\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l\",\"type\":\"uint256\"}],\"name\":\"functionalityNames\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"functionsJSONArray\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"codeName\",\"type\":\"string\"}],\"name\":\"functionalityToJSON\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFunctionalitiesAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"codeName\",\"type\":\"string\"}],\"name\":\"getFunctionalityData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"codeName\",\"type\":\"string\"}],\"name\":\"hasFunctionality\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sourceLocation\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"getMinimumBlockNumberSourceLocationId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"getMinimumBlockNumberFunctionalityAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"getEmergencyMinimumBlockNumberSourceLocationId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"getEmergencyMinimumBlockNumberFunctionalityAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"getEmergencySurveyStakingSourceLocationId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"getEmergencySurveyStakingFunctionalityAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"checkVoteResultSourceLocationId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"checkVoteResultFunctionalityAddress\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"functionality\",\"type\":\"address\"}],\"name\":\"isAuthorizedFunctionality\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"functionality\",\"type\":\"address\"}],\"name\":\"isValidFunctionality\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"codeName\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"submitable\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"preConditionCheck\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"location\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"codeName\",\"type\":\"string\"}],\"name\":\"removeFunctionality\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"removed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"position\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"location\",\"type\":\"address\"}],\"name\":\"setCallingContext\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposalAddress\",\"type\":\"address\"}],\"name\":\"setupFunctionality\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IMVDFunctionalitiesManager.sol\":\"IMVDFunctionalitiesManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IMVDFunctionalitiesManager.sol\":{\"keccak256\":\"0x050d033b3f1926ad9e2c4f0fbe7f90f81329031bc20f74a3763f94807ebbe1c9\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://ff6127103e5d260211c12c4724885a0ef94af693ca66f153d790bd362bbcc75e\",\"dweb:/ipfs/QmPWzoX8mm18cbLGtuybLpEkUWd4cPD6yYtLnTdUeWKMXQ\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IMVDProxy.sol:IMVDProxy": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "position",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "oldAddress",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newAddress",
              "type": "address"
            }
          ],
          "name": "DelegateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "string",
              "name": "key",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "firstIndex",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "secondIndex",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "Event",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "codeName",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "proposal",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "replaced",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "replacedSourceLocation",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "replacedSourceLocationId",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "replacedLocation",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "replacedWasSubmitable",
              "type": "bool"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "replacedMethodSignature",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "replacedWasInternal",
              "type": "bool"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "replacedNeededSender",
              "type": "bool"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "replacedProposal",
              "type": "address"
            }
          ],
          "name": "FunctionalitySet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "proposal",
              "type": "address"
            }
          ],
          "name": "Proposal",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "proposal",
              "type": "address"
            }
          ],
          "name": "ProposalCheck",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "proposal",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            }
          ],
          "name": "ProposalSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "newAddress",
              "type": "address"
            }
          ],
          "name": "ProxyChanged",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "location",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "payload",
              "type": "bytes"
            }
          ],
          "name": "callFromManager",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "initPayload",
              "type": "bytes"
            }
          ],
          "name": "changeProxy",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "proposalAddress",
              "type": "address"
            }
          ],
          "name": "disableProposal",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "eventSignature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "firstIndex",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "secondIndex",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "emitEvent",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "codeName",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "proposal",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "replaced",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "replacedSourceLocation",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "replacedSourceLocationId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "location",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "submitable",
              "type": "bool"
            },
            {
              "internalType": "string",
              "name": "methodSignature",
              "type": "string"
            },
            {
              "internalType": "bool",
              "name": "isInternal",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "needsSender",
              "type": "bool"
            },
            {
              "internalType": "address",
              "name": "proposalAddress",
              "type": "address"
            }
          ],
          "name": "emitFromManager",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "is721",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "flushToWallet",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getDelegates",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "",
              "type": "address[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getDoubleProxyAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getMVDFunctionalitiesManagerAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getMVDFunctionalityModelsManagerAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getMVDFunctionalityProposalManagerAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getMVDWalletAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getStateHolderAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getToken",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "votingTokenAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "functionalityProposalManagerAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateHolderAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "functionalityModelsManagerAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "functionalitiesManagerAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "walletAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "doubleProxyAddress",
              "type": "address"
            }
          ],
          "name": "init",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "functionality",
              "type": "address"
            }
          ],
          "name": "isAuthorizedFunctionality",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "proposal",
              "type": "address"
            }
          ],
          "name": "isValidProposal",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "codeName",
              "type": "string"
            },
            {
              "internalType": "bool",
              "name": "emergency",
              "type": "bool"
            },
            {
              "internalType": "address",
              "name": "sourceLocation",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "sourceLocationId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "location",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "submitable",
              "type": "bool"
            },
            {
              "internalType": "string",
              "name": "methodSignature",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "returnParametersJSONArray",
              "type": "string"
            },
            {
              "internalType": "bool",
              "name": "isInternal",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "needsSender",
              "type": "bool"
            },
            {
              "internalType": "string",
              "name": "replaces",
              "type": "string"
            }
          ],
          "name": "newProposal",
          "outputs": [
            {
              "internalType": "address",
              "name": "proposalAddress",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "codeName",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "read",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "position",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address"
            }
          ],
          "name": "setDelegate",
          "outputs": [
            {
              "internalType": "address",
              "name": "oldAddress",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "setProposal",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "proposalAddress",
              "type": "address"
            }
          ],
          "name": "startProposal",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "codeName",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "submit",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "transfer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "bool",
              "name": "safe",
              "type": "bool"
            },
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "transfer721",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"position\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"firstIndex\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"secondIndex\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Event\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"codeName\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposal\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"replaced\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"replacedSourceLocation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"replacedSourceLocationId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"replacedLocation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"replacedWasSubmitable\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"replacedMethodSignature\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"replacedWasInternal\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"replacedNeededSender\",\"type\":\"bool\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"replacedProposal\",\"type\":\"address\"}],\"name\":\"FunctionalitySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposal\",\"type\":\"address\"}],\"name\":\"Proposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposal\",\"type\":\"address\"}],\"name\":\"ProposalCheck\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposal\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"ProposalSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ProxyChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"location\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"callFromManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initPayload\",\"type\":\"bytes\"}],\"name\":\"changeProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposalAddress\",\"type\":\"address\"}],\"name\":\"disableProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"eventSignature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"firstIndex\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"secondIndex\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"emitEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"codeName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"proposal\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"replaced\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"replacedSourceLocation\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"replacedSourceLocationId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"location\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"submitable\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"isInternal\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"needsSender\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"proposalAddress\",\"type\":\"address\"}],\"name\":\"emitFromManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"is721\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"flushToWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDelegates\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDoubleProxyAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMVDFunctionalitiesManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMVDFunctionalityModelsManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMVDFunctionalityProposalManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMVDWalletAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateHolderAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"votingTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"functionalityProposalManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stateHolderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"functionalityModelsManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"functionalitiesManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"walletAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"doubleProxyAddress\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"functionality\",\"type\":\"address\"}],\"name\":\"isAuthorizedFunctionality\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposal\",\"type\":\"address\"}],\"name\":\"isValidProposal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"codeName\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"emergency\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"sourceLocation\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceLocationId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"location\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"submitable\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"methodSignature\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"returnParametersJSONArray\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"isInternal\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"needsSender\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"replaces\",\"type\":\"string\"}],\"name\":\"newProposal\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proposalAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"codeName\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"read\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"position\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposalAddress\",\"type\":\"address\"}],\"name\":\"startProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"codeName\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"submit\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"safe\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"transfer721\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IMVDProxy.sol\":\"IMVDProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IMVDProxy.sol\":{\"keccak256\":\"0x4ec6db71aadf5a452fb98805e8d8652ab24251146f3d99c4438948f2b2c7d08d\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://0f2f95f6c40623a9d90932d2c9ae3e931cabb2704447db8148f33beebc2c69d3\",\"dweb:/ipfs/QmfAXd4ZG8HKisCQPCu9Kx237fomRLUB7UBN43t3bFjoCY\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IMateriaFactory.sol:IMateriaFactory": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "setDefaultMateriaFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "setDefaultSwapFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "setFees",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"setDefaultMateriaFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"setDefaultSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"setFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IMateriaFactory.sol\":\"IMateriaFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IMateriaFactory.sol\":{\"keccak256\":\"0xbb23d0937dd4e8da3b15e4e461603554abc9945d40b713f5f8f6e612d7e36dae\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://1cc856dd3375c7c345c693edda94b27d5c03d666843989308d6e61ef786b3718\",\"dweb:/ipfs/QmZaq9Vec3gVXNFoaWX56B2DQPYjpiDahdEoqogskHiJAp\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IMateriaLiquidityRemover.sol:IMateriaLiquidityRemover": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountBridge",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountBridge\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IMateriaLiquidityRemover.sol\":\"IMateriaLiquidityRemover\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IMateriaLiquidityRemover.sol\":{\"keccak256\":\"0x208c793868a45997c47770a5aa5730e343a7bdbba2e4ddfa64fe59c9d745be48\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://31840c6e15cf0b72cef4081be68053a158d4360d28b1f0ff82d58831b6638cd9\",\"dweb:/ipfs/QmbbDFoyYkZPKyuKC7fuuoos5fDfy2gQjz1hcHw7GRf13c\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IMateriaOrchestrator.sol:IMateriaOrchestrator": {
      "abi": [
        {
          "inputs": [],
          "name": "ETHEREUM_OBJECT_ID",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "bridgeAmountDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "EthAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "bridgeToken",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "doubleProxy",
          "outputs": [
            {
              "internalType": "contract IDoubleProxy",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "erc20Wrapper",
          "outputs": [
            {
              "internalType": "contract IERC20WrapperV1",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "contract IMateriaFactory",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountIn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsIn",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsOut",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            }
          ],
          "name": "getCrumbs",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "isEthItem",
          "outputs": [
            {
              "internalType": "address",
              "name": "collection",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "ethItem",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "itemId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "isNativeItem",
          "outputs": [
            {
              "internalType": "address",
              "name": "collection",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "native",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "itemId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "decimals",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidityAdder",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidityRemover",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "values",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "onERC1155BatchReceived",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "onERC1155Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityAndUnwrap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "EthAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ethAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridgeAmountMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermitAndUnwrap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOrchestrator",
              "type": "address"
            }
          ],
          "name": "retire",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newBridgeToken",
              "type": "address"
            }
          ],
          "name": "setBridgeToken",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "materiaFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "swapFee",
              "type": "uint256"
            }
          ],
          "name": "setDefaultFees",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newDoubleProxy",
              "type": "address"
            }
          ],
          "name": "setDoubleProxy",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newErc20Wrapper",
              "type": "address"
            }
          ],
          "name": "setErc20Wrapper",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newEthereumObjectId",
              "type": "uint256"
            }
          ],
          "name": "setEthereumObjectId",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newFactory",
              "type": "address"
            }
          ],
          "name": "setFactory",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "materiaFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "swapFee",
              "type": "uint256"
            }
          ],
          "name": "setFees",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_adder",
              "type": "address"
            }
          ],
          "name": "setLiquidityAdder",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_remover",
              "type": "address"
            }
          ],
          "name": "setLiquidityRemover",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_swapper",
              "type": "address"
            }
          ],
          "name": "setSwapper",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "swapper",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "wrapper",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "payload",
              "type": "bytes"
            }
          ],
          "name": "wrap",
          "outputs": [
            {
              "internalType": "address",
              "name": "interoperable",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "itemAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ETHEREUM_OBJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bridgeAmountDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"EthAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"doubleProxy\",\"outputs\":[{\"internalType\":\"contract IDoubleProxy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20Wrapper\",\"outputs\":[{\"internalType\":\"contract IERC20WrapperV1\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract IMateriaFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"getCrumbs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isEthItem\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"collection\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ethItem\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"itemId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isNativeItem\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"collection\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"native\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"itemId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidityAdder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidityRemover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAndUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"EthAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmountMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermitAndUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOrchestrator\",\"type\":\"address\"}],\"name\":\"retire\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newBridgeToken\",\"type\":\"address\"}],\"name\":\"setBridgeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"materiaFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"setDefaultFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newDoubleProxy\",\"type\":\"address\"}],\"name\":\"setDoubleProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newErc20Wrapper\",\"type\":\"address\"}],\"name\":\"setErc20Wrapper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newEthereumObjectId\",\"type\":\"uint256\"}],\"name\":\"setEthereumObjectId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newFactory\",\"type\":\"address\"}],\"name\":\"setFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeTo\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"materiaFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"setFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_adder\",\"type\":\"address\"}],\"name\":\"setLiquidityAdder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_remover\",\"type\":\"address\"}],\"name\":\"setLiquidityRemover\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_swapper\",\"type\":\"address\"}],\"name\":\"setSwapper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"interoperable\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"itemAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IMateriaOrchestrator.sol\":\"IMateriaOrchestrator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IDoubleProxy.sol\":{\"keccak256\":\"0xb3775ff336d8ca9e0f7cb3b7e7c322d96c6360b53ec4a3ce45c6540d4f0126a3\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://6ec1948724904ecf9185f960548865d20a13969a840c926e9162e4bb354d18f6\",\"dweb:/ipfs/QmXbRyhfnW3E4Mij5y8v9JfHVB2vqxxwDgNfvHeu3wHiHJ\"]},\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IERC20WrapperV1.sol\":{\"keccak256\":\"0xb11ab8431790ecf02d6380277e277a1e44fcf1cbc81973301149e7080157ea4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b5dfc1840e8834ba39b1a634fdc2ba67d250adc4f8540f0ee33e16439ccb9cd\",\"dweb:/ipfs/QmTyF4vz44kcYuLuZAEW7tBxWuMiNZAojDKopi8oeudgk3\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]},\"contracts/interfaces/IEthItemMainInterface.sol\":{\"keccak256\":\"0x1bc85f4e88618a2d75910da856d5d43a87213463dae57054b44aa0e2220c43e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12240288d6503024c37ad756722f451ad3d819affd30b9d54ca0e06942c414b0\",\"dweb:/ipfs/QmU1hLcanobgXgEEXbbA56YPob23ghDXXqjK7gCCXbj3mT\"]},\"contracts/interfaces/IEthItemModelBase.sol\":{\"keccak256\":\"0x2ef4d851f1127e58dc496490f84ebe5690bff39c48a0ff43338d0087e3b114da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7db0efdf2c2c6c758fa12146e9aa31ebe1fc7b1eaa36d644ada5a7696b22c627\",\"dweb:/ipfs/QmXP62zz7qHJtQfxNRoxPsPiJxhXTKaKRfjCHGxetwgYyV\"]},\"contracts/interfaces/IMateriaFactory.sol\":{\"keccak256\":\"0xbb23d0937dd4e8da3b15e4e461603554abc9945d40b713f5f8f6e612d7e36dae\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://1cc856dd3375c7c345c693edda94b27d5c03d666843989308d6e61ef786b3718\",\"dweb:/ipfs/QmZaq9Vec3gVXNFoaWX56B2DQPYjpiDahdEoqogskHiJAp\"]},\"contracts/interfaces/IMateriaOrchestrator.sol\":{\"keccak256\":\"0x178eea6d9abe7758adbf30d406c9e3b1e05028441e6bf2661f6ac9d7441b06fc\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://b96f2d38b59f06bbfdf7d13e5a375e8eb6e1de507f40be7e7cbe37b34526a0e6\",\"dweb:/ipfs/QmSgMmM6Uk2EpgwNZxZpJf3yHHPQZ6LvcBWAV9DuPSnrCm\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IMateriaPair.sol:IMateriaPair": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "materiaFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_materiaFee",
              "type": "uint256"
            }
          ],
          "name": "setMateriaFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_swapFee",
              "type": "uint256"
            }
          ],
          "name": "setSwapFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "swapFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"materiaFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_materiaFee\",\"type\":\"uint256\"}],\"name\":\"setMateriaFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_swapFee\",\"type\":\"uint256\"}],\"name\":\"setSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IMateriaPair.sol\":\"IMateriaPair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IMateriaPair.sol\":{\"keccak256\":\"0x9bebb503cf622a7e7328ff812b8817e1d3b22e273d345083118e92522b810693\",\"urls\":[\"bzz-raw://a0b3308a2e9f28a85ec586372329792eaf32562c7293af0657ef03f8d04bc7f9\",\"dweb:/ipfs/QmegwdpH1wYAUtTwKu1yUiekj13CB251znNc4Kb2Jf5b2L\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/INativeV1.sol:INativeV1": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "ApprovalForAll",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            }
          ],
          "name": "NewItem",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "values",
              "type": "uint256[]"
            }
          ],
          "name": "TransferBatch",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "TransferSingle",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "value",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "URI",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "asInteroperable",
          "outputs": [
            {
              "internalType": "contract IEthItemInteroperableInterface",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "accounts",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            }
          ],
          "name": "balanceOfBatch",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "burn",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "objectIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "name": "burnBatch",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            }
          ],
          "name": "canMint",
          "outputs": [
            {
              "internalType": "bool",
              "name": "result",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "emitTransferSingleEvent",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "extension",
          "outputs": [
            {
              "internalType": "address",
              "name": "extensionAddress",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "factoryAddress",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            }
          ],
          "name": "init",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "interfaceModel",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            }
          ],
          "name": "init",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            },
            {
              "internalType": "bool",
              "name": "hasDecimals",
              "type": "bool"
            },
            {
              "internalType": "string",
              "name": "collectionUri",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "extensionAddress",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "extensionInitPayload",
              "type": "bytes"
            }
          ],
          "name": "init",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "extensionInitCallResponse",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "interoperableInterfaceModel",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            }
          ],
          "name": "isApprovedForAll",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "isEditable",
          "outputs": [
            {
              "internalType": "bool",
              "name": "result",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "mainInterfaceVersion",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "ethItemInteroperableVersion",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "makeReadOnly",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "mint",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "tokenName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "tokenSymbol",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "objectUri",
              "type": "string"
            },
            {
              "internalType": "bool",
              "name": "editable",
              "type": "bool"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "partialUri",
              "type": "string"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "tokenName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "tokenSymbol",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "objectUri",
              "type": "string"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "modelVersion",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "modelVersionNumber",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "releaseExtension",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "safeBatchTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "safeTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "setApprovalForAll",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "newUri",
              "type": "string"
            }
          ],
          "name": "setUri",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "newUri",
              "type": "string"
            }
          ],
          "name": "setUri",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "interfaceId",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ethItemAmount",
              "type": "uint256"
            }
          ],
          "name": "toInteroperableInterfaceAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "interoperableInterfaceAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "erc20WrapperAmount",
              "type": "uint256"
            }
          ],
          "name": "toMainInterfaceAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "mainInterfaceAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "objectId",
              "type": "uint256"
            }
          ],
          "name": "uri",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "uri",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"NewItem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"asInteroperable\",\"outputs\":[{\"internalType\":\"contract IEthItemInteroperableInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"objectIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canMint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emitTransferSingleEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"extension\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"extensionAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"factoryAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"interfaceModel\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"hasDecimals\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"collectionUri\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"extensionAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"extensionInitPayload\",\"type\":\"bytes\"}],\"name\":\"init\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"extensionInitCallResponse\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"interoperableInterfaceModel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"isEditable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mainInterfaceVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ethItemInteroperableVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"makeReadOnly\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"objectUri\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"editable\",\"type\":\"bool\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"partialUri\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"objectUri\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"modelVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"modelVersionNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"releaseExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"newUri\",\"type\":\"string\"}],\"name\":\"setUri\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newUri\",\"type\":\"string\"}],\"name\":\"setUri\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethItemAmount\",\"type\":\"uint256\"}],\"name\":\"toInteroperableInterfaceAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"interoperableInterfaceAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"erc20WrapperAmount\",\"type\":\"uint256\"}],\"name\":\"toMainInterfaceAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"mainInterfaceAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"objectId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"EthItem token standard - Version 1 This is a pure extension of the EthItem Token Standard, which also introduces an optional extension that can introduce some external behavior to the EthItem. Extension can also be a simple wallet\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"canMint(address)\":{\"params\":{\"operator\":\"The address to know info about\"},\"returns\":{\"result\":\"true if the given address is able to mint new tokens, false otherwise.\"}},\"decimals(uint256)\":{\"details\":\"Returns the decimals of the given token id\",\"params\":{\"objectId\":\"the id of the token whose decimals you want to know \"}},\"extension()\":{\"returns\":{\"extensionAddress\":\"the address of the eventual EthItem main owner or the SmartContract which contains all the logics to directly exploit all the Collection Items of this EthItem. It can also be a simple wallet\"}},\"factory()\":{\"returns\":{\"factoryAddress\":\"the address of the Contract which initialized this EthItem\"}},\"init(string,string)\":{\"details\":\"Contract Initialization, the caller of this method should be a Contract containing the logic to provide the EthItemERC20WrapperModel to be used to create ERC20-based objectIds\",\"params\":{\"name\":\"the chosen name for this NFT\",\"symbol\":\"the chosen symbol (Ticker) for this NFT\"}},\"init(string,string,bool,string,address,bytes)\":{\"details\":\"Contract initialization\",\"params\":{\"extensionAddress\":\"the optional address of the extension. It can be a Wallet or a SmartContract\",\"extensionInitPayload\":\"the optional payload useful to call the extension within the new created EthItem\",\"name\":\"the chosen name for this NFT\",\"symbol\":\"the chosen symbol (Ticker) for this NFT\"}},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"isEditable(uint256)\":{\"params\":{\"objectId\":\"The item to know info about\"},\"returns\":{\"result\":\"true if it is possible to mint more items of the given objectId, false otherwhise.\"}},\"modelVersion()\":{\"returns\":{\"modelVersionNumber\":\"The version number of the Model, it should be progressive\"}},\"name(uint256)\":{\"details\":\"Returns the name of the given token id\",\"params\":{\"objectId\":\"the id of the token whose name you want to know \"}},\"releaseExtension()\":{\"details\":\"Method callable by the extension only and useful to release the control on the EthItem, which from now on will run independently\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol(uint256)\":{\"details\":\"Returns the symbol of the given token id\",\"params\":{\"objectId\":\"the id of the token whose symbol you want to know \"}},\"totalSupply(uint256)\":{\"details\":\"Returns the total supply of the given token id\",\"params\":{\"objectId\":\"the id of the token whose availability you want to know \"}},\"uri(uint256)\":{\"details\":\"Returns the uri of the given token id\",\"params\":{\"objectId\":\"the id of the token whose uri you want to know \"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/INativeV1.sol\":\"INativeV1\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBaseTokenData.sol\":{\"keccak256\":\"0xb02cb2c7ab9fbf94410ea13965f6e62ad4d348b6731396b5a2abddc166ccd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://110ed41f2461b9344138b591128b021b92f81d6f476fc709aeb76843a16562b7\",\"dweb:/ipfs/QmVJBCMwrVFA6wna2UCypYeY14jxPndotMpYkNztPNpoFj\"]},\"contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0xaa5e55648d433ba71d84fff3acee448218e17671e2c2ba2eeff1a83fc4b15be5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1321493739df1579140492d5ee05071da8eb92acad2355a3402d92f6dba8718\",\"dweb:/ipfs/QmZsDJqPsJdJBPAv7M8Q2RQPUCJK5HaZeof6kqty45ypcr\"]},\"contracts/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0x9c96a59c3d5d16b21c6ebb23b262748059cca44e1ad095fd65beb6b3fdd9ce7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eb00d2f71977ce2a09e17fd023f6d73d0982012a522d8e8165a767dd2fe7b7d\",\"dweb:/ipfs/QmPRkNMER5Er2LdP5sAAoondAp8R37ULZPpwxVekwf12U4\"]},\"contracts/interfaces/IERC1155Views.sol\":{\"keccak256\":\"0x165133ed153e90263b5cff3656bce55e46aaefc682bed5a593427e9f99c01026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d8265b2c2503af1140b1bf5e4dd4ba36fdda7268b498288b9f9d40d156a122f\",\"dweb:/ipfs/QmNU2dX6ML4S5Kw1kemAxF6qTrcLj9btU5pGmRwAeTRZKC\"]},\"contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x1e37c0672c8b126c1962605427b70bdb93e6deb37bb086bfa91355072449f810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de7b376c2da4c1ad9fe9e37c31871228778e27a43d7bf9de4a8d8a9a9712f46a\",\"dweb:/ipfs/QmPd41MzMckfbxvf2g9W1GPLzFeZt39LCmS4GXGD7AEUbr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xa8547ef7a4aabd9c15930d0caaedaf02826ec2345fa5015ba134b4087fd3eb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed005dc99628ad306463c7e1909c127fbedcb67ac3035c6ab6c69a438564665c\",\"dweb:/ipfs/QmXWTqBYXuNoKq5NgKQE9CzUzBG39a84qTvYTkSMxLZV3f\"]},\"contracts/interfaces/IERC20Data.sol\":{\"keccak256\":\"0xfe4e3c95be7c3f34f3a588d7d643025740b769d48330398a0d6b9e894534e070\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5da70697458012ee9e6432d94b1a5258d36902b5f1790c479b0a3f03649de366\",\"dweb:/ipfs/QmSpkrRfK4cmVXuBrGb4MDmp9gLNKQrYqgiWCciqRFxJdU\"]},\"contracts/interfaces/IEthItemInteroperableInterface.sol\":{\"keccak256\":\"0xd6c86125dbcd0941a00ee9727d1a37c4e0558b8d917f661d8059b85fe297ca42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d7bd235c9e3447a082147c068e6f71b04677b279a640fcb76c5b32ab5d13370\",\"dweb:/ipfs/QmXZJZ388qAKj2DeHDKAucrPReDqqpmKrh9NFtkkib5Yqe\"]},\"contracts/interfaces/IEthItemMainInterface.sol\":{\"keccak256\":\"0x1bc85f4e88618a2d75910da856d5d43a87213463dae57054b44aa0e2220c43e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12240288d6503024c37ad756722f451ad3d819affd30b9d54ca0e06942c414b0\",\"dweb:/ipfs/QmU1hLcanobgXgEEXbbA56YPob23ghDXXqjK7gCCXbj3mT\"]},\"contracts/interfaces/IEthItemModelBase.sol\":{\"keccak256\":\"0x2ef4d851f1127e58dc496490f84ebe5690bff39c48a0ff43338d0087e3b114da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7db0efdf2c2c6c758fa12146e9aa31ebe1fc7b1eaa36d644ada5a7696b22c627\",\"dweb:/ipfs/QmXP62zz7qHJtQfxNRoxPsPiJxhXTKaKRfjCHGxetwgYyV\"]},\"contracts/interfaces/INativeV1.sol\":{\"keccak256\":\"0x923c01bc275842ef09bd388355d611e119f115b92c283beb11b88d783696bae5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://117e0b85dba46111c974aa4a9e6ddd46d9d75198e93b6e2c571604fb5b25f5cb\",\"dweb:/ipfs/QmaVw7wqeR8jWMW55VPp6F1cMcGhb4VLAG3fPpRwTHmn3D\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IStateHolder.sol:IStateHolder": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            }
          ],
          "name": "clear",
          "outputs": [
            {
              "internalType": "string",
              "name": "oldDataType",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "oldVal",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            }
          ],
          "name": "exists",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            }
          ],
          "name": "getAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            }
          ],
          "name": "getBool",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            }
          ],
          "name": "getBytes",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            }
          ],
          "name": "getDataType",
          "outputs": [
            {
              "internalType": "string",
              "name": "dataType",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getProxy",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getStateSize",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            }
          ],
          "name": "getString",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            }
          ],
          "name": "getUint256",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "init",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "val",
              "type": "address"
            }
          ],
          "name": "setAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            },
            {
              "internalType": "bool",
              "name": "val",
              "type": "bool"
            }
          ],
          "name": "setBool",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "val",
              "type": "bytes"
            }
          ],
          "name": "setBytes",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "setProxy",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "val",
              "type": "string"
            }
          ],
          "name": "setString",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "varName",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "val",
              "type": "uint256"
            }
          ],
          "name": "setUint256",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "start",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "l",
              "type": "uint256"
            }
          ],
          "name": "toJSON",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "toJSON",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"}],\"name\":\"clear\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"oldDataType\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"oldVal\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"}],\"name\":\"getAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"}],\"name\":\"getBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"}],\"name\":\"getBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"}],\"name\":\"getDataType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"dataType\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"}],\"name\":\"getString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"}],\"name\":\"getUint256\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"setAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"val\",\"type\":\"bool\"}],\"name\":\"setBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"setBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"setString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"varName\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"setUint256\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l\",\"type\":\"uint256\"}],\"name\":\"toJSON\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toJSON\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IStateHolder.sol\":\"IStateHolder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IStateHolder.sol\":{\"keccak256\":\"0x3560acebbd333d1d36f904784df4111e9354e4f8094710322e1fcfbcb5f8f167\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://adaf7d8aff81a82a4130890e7c459c7e27b448e3a35a21fd74f5d3b7e2183a24\",\"dweb:/ipfs/QmSjnsyaV3zrFA9YHut4KgHQMnqcq3BonprBg7ysuoKybf\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IWETH.sol:IWETH": {
      "abi": [
        {
          "inputs": [],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "object": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "object": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IWETH.sol\":\"IWETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IWETH.sol\":{\"keccak256\":\"0xc4575af9ca109a9148b2b498b4355c7b9cac1eca5e8b8bc3dc8a88272d76fa4c\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://4c3cd6f5057bd6de72e35474a5dc5598b9205748fa77dcee630f8a5ee3e9f6d1\",\"dweb:/ipfs/Qmefc64fJ2uowPPHBQuck2b5XqYD8vsRqja8QV29RXQBvA\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/libraries/MateriaLibrary.sol:MateriaLibrary": {
      "abi": [],
      "evm": {
        "bytecode": {
          "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204eab7e7d5f5cb2571a724aa34b329745f5d6d6fe6ef16565edee15fd91d5d85d64736f6c63430008000033",
          "sourceMap": "172:4831:32:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;172:4831:32;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204eab7e7d5f5cb2571a724aa34b329745f5d6d6fe6ef16565edee15fd91d5d85d64736f6c63430008000033",
          "sourceMap": "172:4831:32:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/MateriaLibrary.sol\":\"MateriaLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IMateriaFactory.sol\":{\"keccak256\":\"0xbb23d0937dd4e8da3b15e4e461603554abc9945d40b713f5f8f6e612d7e36dae\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://1cc856dd3375c7c345c693edda94b27d5c03d666843989308d6e61ef786b3718\",\"dweb:/ipfs/QmZaq9Vec3gVXNFoaWX56B2DQPYjpiDahdEoqogskHiJAp\"]},\"contracts/interfaces/IMateriaPair.sol\":{\"keccak256\":\"0x9bebb503cf622a7e7328ff812b8817e1d3b22e273d345083118e92522b810693\",\"urls\":[\"bzz-raw://a0b3308a2e9f28a85ec586372329792eaf32562c7293af0657ef03f8d04bc7f9\",\"dweb:/ipfs/QmegwdpH1wYAUtTwKu1yUiekj13CB251znNc4Kb2Jf5b2L\"]},\"contracts/libraries/MateriaLibrary.sol\":{\"keccak256\":\"0x84b8cdd67ecab6d9bd442140670a16c4608fefdcaa702c25339a89b0527381c6\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://f2ce38a46f0ddc6b043ba9e91590f482553fc96c7bec769825d36089f6d08887\",\"dweb:/ipfs/QmXVp7AwoHFm4whU26XE9kvaYmfb4QyXrzsqaEGXvgybFN\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xe04b4ed1aab8779734d012e907f742e8b6e8ad539c01d5466b9eb58752fdc514\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://667941f2ea3584629681a303e988ffcbc33a2e8313f4658ad8700b2209b3ea4d\",\"dweb:/ipfs/QmafqLrntkf6gRyhAHt4wYojdHwuZXeD8gcE7FJWW6rKWm\"]}},\"version\":1}",
      "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204eab7e7d5f5cb2571a724aa34b329745f5d6d6fe6ef16565edee15fd91d5d85d64736f6c63430008000033",
      "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204eab7e7d5f5cb2571a724aa34b329745f5d6d6fe6ef16565edee15fd91d5d85d64736f6c63430008000033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204eab7e7d5f5cb2571a724aa34b329745f5d6d6fe6ef16565edee15fd91d5d85d64736f6c63430008000033",
      "srcmap": "172:4831:32:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;172:4831:32;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "172:4831:32:-:0;;;;;;;;"
    },
    "contracts/libraries/MateriaLiquidityMathLibrary.sol:MateriaLiquidityMathLibrary": {
      "abi": [],
      "evm": {
        "bytecode": {
          "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203423a91df5966ccc5b5215909d0f7ea9d7e9d94ddca00cc4de9f3e26427da95364736f6c63430008000033",
          "sourceMap": "338:5439:33:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;338:5439:33;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203423a91df5966ccc5b5215909d0f7ea9d7e9d94ddca00cc4de9f3e26427da95364736f6c63430008000033",
          "sourceMap": "338:5439:33:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/MateriaLiquidityMathLibrary.sol\":\"MateriaLiquidityMathLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IMateriaFactory.sol\":{\"keccak256\":\"0xbb23d0937dd4e8da3b15e4e461603554abc9945d40b713f5f8f6e612d7e36dae\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://1cc856dd3375c7c345c693edda94b27d5c03d666843989308d6e61ef786b3718\",\"dweb:/ipfs/QmZaq9Vec3gVXNFoaWX56B2DQPYjpiDahdEoqogskHiJAp\"]},\"contracts/interfaces/IMateriaPair.sol\":{\"keccak256\":\"0x9bebb503cf622a7e7328ff812b8817e1d3b22e273d345083118e92522b810693\",\"urls\":[\"bzz-raw://a0b3308a2e9f28a85ec586372329792eaf32562c7293af0657ef03f8d04bc7f9\",\"dweb:/ipfs/QmegwdpH1wYAUtTwKu1yUiekj13CB251znNc4Kb2Jf5b2L\"]},\"contracts/libraries/MateriaLibrary.sol\":{\"keccak256\":\"0x84b8cdd67ecab6d9bd442140670a16c4608fefdcaa702c25339a89b0527381c6\",\"license\":\"GPL3\",\"urls\":[\"bzz-raw://f2ce38a46f0ddc6b043ba9e91590f482553fc96c7bec769825d36089f6d08887\",\"dweb:/ipfs/QmXVp7AwoHFm4whU26XE9kvaYmfb4QyXrzsqaEGXvgybFN\"]},\"contracts/libraries/MateriaLiquidityMathLibrary.sol\":{\"keccak256\":\"0x138eda0b6b2fcd13896f36df95fabfba41993ed795390821bf122627f72d88d3\",\"urls\":[\"bzz-raw://82d6d09dd40daeb1753dcaea811bf07915c5ee54eaf8b8c4b025d7216eae46ba\",\"dweb:/ipfs/QmUCp5AjamJqu6cJdGnfwG2m27UfMtaAe67ksroFknrNcJ\"]},\"contracts/libraries/Math.sol\":{\"keccak256\":\"0x8d2aa0782d2018f23f4dde78b89f561c377dbb9bbcc877da7c2bb5e5f95e1502\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c62a2dbd0f790792855815f1ff2d39fea43b1bc9a29b7e60407afb7fc1ba1bf0\",\"dweb:/ipfs/QmYDAf4QU6xL9FDBKzkjVmoXxUhx3R4FBTnA9hxjJE9mxk\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xe04b4ed1aab8779734d012e907f742e8b6e8ad539c01d5466b9eb58752fdc514\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://667941f2ea3584629681a303e988ffcbc33a2e8313f4658ad8700b2209b3ea4d\",\"dweb:/ipfs/QmafqLrntkf6gRyhAHt4wYojdHwuZXeD8gcE7FJWW6rKWm\"]}},\"version\":1}",
      "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203423a91df5966ccc5b5215909d0f7ea9d7e9d94ddca00cc4de9f3e26427da95364736f6c63430008000033",
      "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203423a91df5966ccc5b5215909d0f7ea9d7e9d94ddca00cc4de9f3e26427da95364736f6c63430008000033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203423a91df5966ccc5b5215909d0f7ea9d7e9d94ddca00cc4de9f3e26427da95364736f6c63430008000033",
      "srcmap": "338:5439:33:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;338:5439:33;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "338:5439:33:-:0;;;;;;;;"
    },
    "contracts/libraries/Math.sol:Math": {
      "abi": [],
      "evm": {
        "bytecode": {
          "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032a732d7e997fd7655930d2118edc81b16dc4d1ca822fa394cba04c87c65682764736f6c63430008000033",
          "sourceMap": "118:522:34:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;118:522:34;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032a732d7e997fd7655930d2118edc81b16dc4d1ca822fa394cba04c87c65682764736f6c63430008000033",
          "sourceMap": "118:522:34:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/Math.sol\":\"Math\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/libraries/Math.sol\":{\"keccak256\":\"0x8d2aa0782d2018f23f4dde78b89f561c377dbb9bbcc877da7c2bb5e5f95e1502\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c62a2dbd0f790792855815f1ff2d39fea43b1bc9a29b7e60407afb7fc1ba1bf0\",\"dweb:/ipfs/QmYDAf4QU6xL9FDBKzkjVmoXxUhx3R4FBTnA9hxjJE9mxk\"]}},\"version\":1}",
      "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032a732d7e997fd7655930d2118edc81b16dc4d1ca822fa394cba04c87c65682764736f6c63430008000033",
      "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032a732d7e997fd7655930d2118edc81b16dc4d1ca822fa394cba04c87c65682764736f6c63430008000033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032a732d7e997fd7655930d2118edc81b16dc4d1ca822fa394cba04c87c65682764736f6c63430008000033",
      "srcmap": "118:522:34:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;118:522:34;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "118:522:34:-:0;;;;;;;;"
    },
    "contracts/libraries/SafeMath.sol:SafeMath": {
      "abi": [],
      "evm": {
        "bytecode": {
          "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f91618963aed3a2c44c45f13607b2ddfcfa764e13024a35e3efa3a1c58f740964736f6c63430008000033",
          "sourceMap": "170:430:35:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;170:430:35;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f91618963aed3a2c44c45f13607b2ddfcfa764e13024a35e3efa3a1c58f740964736f6c63430008000033",
          "sourceMap": "170:430:35:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xe04b4ed1aab8779734d012e907f742e8b6e8ad539c01d5466b9eb58752fdc514\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://667941f2ea3584629681a303e988ffcbc33a2e8313f4658ad8700b2209b3ea4d\",\"dweb:/ipfs/QmafqLrntkf6gRyhAHt4wYojdHwuZXeD8gcE7FJWW6rKWm\"]}},\"version\":1}",
      "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f91618963aed3a2c44c45f13607b2ddfcfa764e13024a35e3efa3a1c58f740964736f6c63430008000033",
      "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f91618963aed3a2c44c45f13607b2ddfcfa764e13024a35e3efa3a1c58f740964736f6c63430008000033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f91618963aed3a2c44c45f13607b2ddfcfa764e13024a35e3efa3a1c58f740964736f6c63430008000033",
      "srcmap": "170:430:35:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;170:430:35;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "170:430:35:-:0;;;;;;;;"
    },
    "contracts/libraries/TransferHelper.sol:TransferHelper": {
      "abi": [],
      "evm": {
        "bytecode": {
          "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220caa767f6ec4b74b857556f82bc919ffc5b89f13c989d22ef17715a86772ae66c64736f6c63430008000033",
          "sourceMap": "183:1462:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;183:1462:36;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220caa767f6ec4b74b857556f82bc919ffc5b89f13c989d22ef17715a86772ae66c64736f6c63430008000033",
          "sourceMap": "183:1462:36:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0xb2c4a89b2ee4538b41badb2b6e2d141deeca68be9298ec3e7f98b6812b4ee2a2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bf3e8a68c38541e0425dfd1f825371086a9a18eaadf12000e00b0440156198b\",\"dweb:/ipfs/QmcfasSoXaDg5A5dscMiKH41fWnCFnbJfpSAzn5gbMaVxd\"]}},\"version\":1}",
      "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220caa767f6ec4b74b857556f82bc919ffc5b89f13c989d22ef17715a86772ae66c64736f6c63430008000033",
      "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220caa767f6ec4b74b857556f82bc919ffc5b89f13c989d22ef17715a86772ae66c64736f6c63430008000033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220caa767f6ec4b74b857556f82bc919ffc5b89f13c989d22ef17715a86772ae66c64736f6c63430008000033",
      "srcmap": "183:1462:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;183:1462:36;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "183:1462:36:-:0;;;;;;;;"
    },
    "contracts/libraries/UQ112x112.sol:UQ112x112": {
      "abi": [],
      "evm": {
        "bytecode": {
          "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220469805ff80eda415752bc8d7916a7ecc9588cce04d2b3b9bf1f8971738d8785c64736f6c63430008000033",
          "sourceMap": "222:394:37:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;222:394:37;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220469805ff80eda415752bc8d7916a7ecc9588cce04d2b3b9bf1f8971738d8785c64736f6c63430008000033",
          "sourceMap": "222:394:37:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/UQ112x112.sol\":\"UQ112x112\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/libraries/UQ112x112.sol\":{\"keccak256\":\"0x7e007b2ce8b7fea415f6985b7f1ff6df8a10687fae5fda3f824f8ca934b7524f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91d87f2734b9f2b22c5e14bc52b7ed879df588959e358a3034bec7861730c6c4\",\"dweb:/ipfs/QmWwqKQmo3VRqDs6pwM2hmumRtC4iybTrJwEsMV5L42NCP\"]}},\"version\":1}",
      "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220469805ff80eda415752bc8d7916a7ecc9588cce04d2b3b9bf1f8971738d8785c64736f6c63430008000033",
      "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220469805ff80eda415752bc8d7916a7ecc9588cce04d2b3b9bf1f8971738d8785c64736f6c63430008000033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220469805ff80eda415752bc8d7916a7ecc9588cce04d2b3b9bf1f8971738d8785c64736f6c63430008000033",
      "srcmap": "222:394:37:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;222:394:37;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "222:394:37:-:0;;;;;;;;"
    }
  },
  "errors": [
    {
      "component": "general",
      "errorCode": "1878",
      "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/examples/ExampleComputeLiquidityValue.sol\n\n",
      "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
      "severity": "warning",
      "sourceLocation": {
        "end": -1,
        "file": "contracts/examples/ExampleComputeLiquidityValue.sol",
        "start": -1
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "1878",
      "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/examples/ExampleSwapToPrice.sol\n\n",
      "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
      "severity": "warning",
      "sourceLocation": {
        "end": -1,
        "file": "contracts/examples/ExampleSwapToPrice.sol",
        "start": -1
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "1878",
      "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/interfaces/IMateriaPair.sol\n\n",
      "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
      "severity": "warning",
      "sourceLocation": {
        "end": -1,
        "file": "contracts/interfaces/IMateriaPair.sol",
        "start": -1
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "1878",
      "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/libraries/MateriaLiquidityMathLibrary.sol\n\n",
      "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
      "severity": "warning",
      "sourceLocation": {
        "end": -1,
        "file": "contracts/libraries/MateriaLiquidityMathLibrary.sol",
        "start": -1
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "3420",
      "formattedMessage": "Warning: Source file does not specify required compiler version! Consider adding \"pragma solidity ^0.8.0;\"\n--> contracts/interfaces/IMateriaFactory.sol\n\n",
      "message": "Source file does not specify required compiler version! Consider adding \"pragma solidity ^0.8.0;\"",
      "severity": "warning",
      "sourceLocation": {
        "end": -1,
        "file": "contracts/interfaces/IMateriaFactory.sol",
        "start": -1
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "8760",
      "formattedMessage": "Warning: This declaration has the same name as another declaration.\n  --> contracts/interfaces/IMateriaPair.sol:15:24:\n   |\n15 |     function balanceOf(address owner) external view returns (uint256);\n   |                        ^^^^^^^^^^^^^\nNote: The other declaration is here:\n   --> contracts/interfaces/IMateriaPair.sol:110:5:\n    |\n110 |     function owner() external view returns (address);\n    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "This declaration has the same name as another declaration.",
      "secondarySourceLocations": [
        {
          "end": 3063,
          "file": "contracts/interfaces/IMateriaPair.sol",
          "message": "The other declaration is here:",
          "start": 3014
        }
      ],
      "severity": "warning",
      "sourceLocation": {
        "end": 487,
        "file": "contracts/interfaces/IMateriaPair.sol",
        "start": 474
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "8760",
      "formattedMessage": "Warning: This declaration has the same name as another declaration.\n  --> contracts/interfaces/IMateriaPair.sol:17:24:\n   |\n17 |     function allowance(address owner, address spender) external view returns (uint256);\n   |                        ^^^^^^^^^^^^^\nNote: The other declaration is here:\n   --> contracts/interfaces/IMateriaPair.sol:110:5:\n    |\n110 |     function owner() external view returns (address);\n    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "This declaration has the same name as another declaration.",
      "secondarySourceLocations": [
        {
          "end": 3063,
          "file": "contracts/interfaces/IMateriaPair.sol",
          "message": "The other declaration is here:",
          "start": 3014
        }
      ],
      "severity": "warning",
      "sourceLocation": {
        "end": 559,
        "file": "contracts/interfaces/IMateriaPair.sol",
        "start": 546
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "8760",
      "formattedMessage": "Warning: This declaration has the same name as another declaration.\n  --> contracts/interfaces/IMateriaPair.sol:33:21:\n   |\n33 |     function nonces(address owner) external view returns (uint256);\n   |                     ^^^^^^^^^^^^^\nNote: The other declaration is here:\n   --> contracts/interfaces/IMateriaPair.sol:110:5:\n    |\n110 |     function owner() external view returns (address);\n    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "This declaration has the same name as another declaration.",
      "secondarySourceLocations": [
        {
          "end": 3063,
          "file": "contracts/interfaces/IMateriaPair.sol",
          "message": "The other declaration is here:",
          "start": 3014
        }
      ],
      "severity": "warning",
      "sourceLocation": {
        "end": 1053,
        "file": "contracts/interfaces/IMateriaPair.sol",
        "start": 1040
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "8760",
      "formattedMessage": "Warning: This declaration has the same name as another declaration.\n  --> contracts/interfaces/IMateriaPair.sol:36:9:\n   |\n36 |         address owner,\n   |         ^^^^^^^^^^^^^\nNote: The other declaration is here:\n   --> contracts/interfaces/IMateriaPair.sol:110:5:\n    |\n110 |     function owner() external view returns (address);\n    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "This declaration has the same name as another declaration.",
      "secondarySourceLocations": [
        {
          "end": 3063,
          "file": "contracts/interfaces/IMateriaPair.sol",
          "message": "The other declaration is here:",
          "start": 3014
        }
      ],
      "severity": "warning",
      "sourceLocation": {
        "end": 1131,
        "file": "contracts/interfaces/IMateriaPair.sol",
        "start": 1118
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "2519",
      "formattedMessage": "Warning: This declaration shadows an existing declaration.\n   --> contracts/MateriaOrchestrator.sol:457:59:\n    |\n457 |             try INativeV1(collection).decimals() returns (uint256 decimals) {\n    |                                                           ^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> contracts/MateriaOrchestrator.sol:447:13:\n    |\n447 |             uint256 decimals\n    |             ^^^^^^^^^^^^^^^^\n\n",
      "message": "This declaration shadows an existing declaration.",
      "secondarySourceLocations": [
        {
          "end": 13040,
          "file": "contracts/MateriaOrchestrator.sol",
          "message": "The shadowed declaration is here:",
          "start": 13024
        }
      ],
      "severity": "warning",
      "sourceLocation": {
        "end": 13315,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 13299
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "2462",
      "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  --> contracts/examples/ExampleComputeLiquidityValue.sol:10:5:\n   |\n10 |     constructor(address factory_) public {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
      "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
      "severity": "warning",
      "sourceLocation": {
        "end": 269,
        "file": "contracts/examples/ExampleComputeLiquidityValue.sol",
        "start": 197
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "2462",
      "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  --> contracts/examples/ExampleSwapToPrice.sol:17:5:\n   |\n17 |     constructor(address factory_, IMateriaOrchestrator orchestrator_) public {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
      "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
      "severity": "warning",
      "sourceLocation": {
        "end": 634,
        "file": "contracts/examples/ExampleSwapToPrice.sol",
        "start": 488
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:182:9:\n    |\n182 |         address token,\n    |         ^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6019,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6006
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:183:9:\n    |\n183 |         uint256 tokenAmountDesired,\n    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6055,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6029
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:184:9:\n    |\n184 |         uint256 bridgeAmountDesired,\n    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6092,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6065
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:185:9:\n    |\n185 |         uint256 tokenAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6124,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6102
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:186:9:\n    |\n186 |         uint256 bridgeAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6157,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6134
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:187:9:\n    |\n187 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6177,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6167
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:188:9:\n    |\n188 |         uint256 deadline\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6203,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6187
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:193:13:\n    |\n193 |             uint256 amountA,\n    |             ^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6289,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6274
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:194:13:\n    |\n194 |             uint256 amountB,\n    |             ^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6318,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6303
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:195:13:\n    |\n195 |             uint256 liquidity\n    |             ^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6349,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6332
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:202:9:\n    |\n202 |         uint256 bridgeAmountDesired,\n    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6473,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6446
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:203:9:\n    |\n203 |         uint256 EthAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6503,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6483
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:204:9:\n    |\n204 |         uint256 bridgeAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6536,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6513
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:205:9:\n    |\n205 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6556,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6546
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:206:9:\n    |\n206 |         uint256 deadline\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6582,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6566
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:212:13:\n    |\n212 |             uint256 amountToken,\n    |             ^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6688,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6669
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:213:13:\n    |\n213 |             uint256 amountETH,\n    |             ^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6719,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6702
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:214:13:\n    |\n214 |             uint256 liquidity\n    |             ^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 6750,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 6733
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:227:9:\n    |\n227 |         address token,\n    |         ^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7155,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7142
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:228:9:\n    |\n228 |         uint256 liquidity,\n    |         ^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7182,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7165
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:229:9:\n    |\n229 |         uint256 tokenAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7214,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7192
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:230:9:\n    |\n230 |         uint256 bridgeAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7247,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7224
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:231:9:\n    |\n231 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7267,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7257
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:232:9:\n    |\n232 |         uint256 deadline\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7293,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7277
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:238:9:\n    |\n238 |         uint256 liquidity,\n    |         ^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7420,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7403
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:239:9:\n    |\n239 |         uint256 bridgeAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7453,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7430
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:240:9:\n    |\n240 |         uint256 EthAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7483,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7463
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:241:9:\n    |\n241 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7503,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7493
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:242:9:\n    |\n242 |         uint256 deadline\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7529,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7513
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:248:9:\n    |\n248 |         address token,\n    |         ^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7659,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7646
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:249:9:\n    |\n249 |         uint256 liquidity,\n    |         ^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7686,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7669
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:250:9:\n    |\n250 |         uint256 tokenAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7718,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7696
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:251:9:\n    |\n251 |         uint256 bridgeAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7751,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7728
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:252:9:\n    |\n252 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7771,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7761
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:253:9:\n    |\n253 |         uint256 deadline,\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7797,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7781
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:254:9:\n    |\n254 |         bool approveMax,\n    |         ^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7822,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7807
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:255:9:\n    |\n255 |         uint8 v,\n    |         ^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7839,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7832
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:256:9:\n    |\n256 |         bytes32 r,\n    |         ^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7858,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7849
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:257:9:\n    |\n257 |         bytes32 s\n    |         ^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 7877,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7868
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:263:9:\n    |\n263 |         uint256 liquidity,\n    |         ^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8014,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 7997
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:264:9:\n    |\n264 |         uint256 tokenAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8046,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8024
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:265:9:\n    |\n265 |         uint256 bridgeAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8079,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8056
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:266:9:\n    |\n266 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8099,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8089
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:267:9:\n    |\n267 |         uint256 deadline,\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8125,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8109
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:268:9:\n    |\n268 |         bool approveMax,\n    |         ^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8150,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8135
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:269:9:\n    |\n269 |         uint8 v,\n    |         ^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8167,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8160
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:270:9:\n    |\n270 |         bytes32 r,\n    |         ^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8186,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8177
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:271:9:\n    |\n271 |         bytes32 s\n    |         ^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8205,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8196
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:277:9:\n    |\n277 |         address token,\n    |         ^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8338,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8325
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:278:9:\n    |\n278 |         uint256 liquidity,\n    |         ^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8365,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8348
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:279:9:\n    |\n279 |         uint256 tokenAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8397,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8375
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:280:9:\n    |\n280 |         uint256 bridgeAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8430,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8407
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:281:9:\n    |\n281 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8450,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8440
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:282:9:\n    |\n282 |         uint256 deadline\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8476,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8460
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:288:9:\n    |\n288 |         address token,\n    |         ^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8615,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8602
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:289:9:\n    |\n289 |         uint256 liquidity,\n    |         ^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8642,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8625
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:290:9:\n    |\n290 |         uint256 tokenAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8674,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8652
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:291:9:\n    |\n291 |         uint256 bridgeAmountMin,\n    |         ^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8707,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8684
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:292:9:\n    |\n292 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8727,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8717
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:293:9:\n    |\n293 |         uint256 deadline,\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8753,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8737
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:294:9:\n    |\n294 |         bool approveMax,\n    |         ^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8778,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8763
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:295:9:\n    |\n295 |         uint8 v,\n    |         ^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8795,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8788
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:296:9:\n    |\n296 |         bytes32 r,\n    |         ^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8814,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8805
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:297:9:\n    |\n297 |         bytes32 s\n    |         ^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 8833,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 8824
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:308:9:\n    |\n308 |         uint256 amountIn,\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9298,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9282
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:309:9:\n    |\n309 |         uint256 amountOutMin,\n    |         ^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9328,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9308
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:310:9:\n    |\n310 |         address[] memory path,\n    |         ^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9359,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9338
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:311:9:\n    |\n311 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9379,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9369
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:312:9:\n    |\n312 |         uint256 deadline\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9405,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9389
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:313:32:\n    |\n313 |     ) public override returns (uint256[] memory amounts) {\n    |                                ^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9461,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9437
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:318:9:\n    |\n318 |         uint256 amountOut,\n    |         ^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9564,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9547
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:319:9:\n    |\n319 |         uint256 amountInMax,\n    |         ^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9593,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9574
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:320:9:\n    |\n320 |         address[] memory path,\n    |         ^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9624,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9603
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:321:9:\n    |\n321 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9644,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9634
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:322:9:\n    |\n322 |         uint256 deadline\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9670,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9654
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:323:32:\n    |\n323 |     ) public override returns (uint256[] memory amounts) {\n    |                                ^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9726,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9702
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:328:9:\n    |\n328 |         uint256 amountOutMin,\n    |         ^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9829,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9809
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:329:9:\n    |\n329 |         address[] memory path,\n    |         ^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9860,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9839
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:330:9:\n    |\n330 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9880,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9870
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:331:9:\n    |\n331 |         uint256 deadline\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 9906,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 9890
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:337:9:\n    |\n337 |         uint256 amountOut,\n    |         ^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10035,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10018
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:338:9:\n    |\n338 |         uint256 amountInMax,\n    |         ^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10064,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10045
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:339:9:\n    |\n339 |         address[] memory path,\n    |         ^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10095,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10074
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:340:9:\n    |\n340 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10115,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10105
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:341:9:\n    |\n341 |         uint256 deadline\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10141,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10125
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:347:9:\n    |\n347 |         uint256 amountIn,\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10261,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10245
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:348:9:\n    |\n348 |         uint256 amountOutMin,\n    |         ^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10291,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10271
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:349:9:\n    |\n349 |         address[] memory path,\n    |         ^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10322,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10301
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:350:9:\n    |\n350 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10342,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10332
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:351:9:\n    |\n351 |         uint256 deadline\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10368,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10352
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:357:9:\n    |\n357 |         uint256 amountOut,\n    |         ^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10489,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10472
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:358:9:\n    |\n358 |         address[] memory path,\n    |         ^^^^^^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10520,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10499
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:359:9:\n    |\n359 |         address to,\n    |         ^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10540,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10530
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "errorCode": "5667",
      "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/MateriaOrchestrator.sol:360:9:\n    |\n360 |         uint256 deadline\n    |         ^^^^^^^^^^^^^^^^\n\n",
      "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
      "severity": "warning",
      "sourceLocation": {
        "end": 10566,
        "file": "contracts/MateriaOrchestrator.sol",
        "start": 10550
      },
      "type": "Warning"
    }
  ],
  "sources": {
    "contracts/MateriaLiquidityAdder.sol": {
      "id": 0,
      "AST": {
        "absolutePath": "contracts/MateriaLiquidityAdder.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ],
          "IDoubleProxy": [
            5811
          ],
          "IERC1155": [
            5933
          ],
          "IERC1155Receiver": [
            5971
          ],
          "IERC1155Views": [
            6015
          ],
          "IERC165": [
            6027
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ],
          "IERC20WrapperV1": [
            6161
          ],
          "IEthItemInteroperableInterface": [
            6250
          ],
          "IEthItemMainInterface": [
            6365
          ],
          "IEthItemModelBase": [
            6392
          ],
          "IMateriaFactory": [
            7180
          ],
          "IMateriaOrchestrator": [
            7665
          ],
          "IMateriaPair": [
            7944
          ],
          "INativeV1": [
            8061
          ],
          "MateriaLibrary": [
            8693
          ],
          "MateriaLiquidityAdder": [
            777
          ],
          "MateriaOperator": [
            1926
          ],
          "SafeMath": [
            9314
          ],
          "TransferHelper": [
            9474
          ]
        },
        "id": 778,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:22:0"
          },
          {
            "absolutePath": "contracts/MateriaOperator.sol",
            "file": "./MateriaOperator.sol",
            "id": 2,
            "nodeType": "ImportDirective",
            "scope": 778,
            "sourceUnit": 1927,
            "src": "57:31:0",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaOrchestrator.sol",
            "file": "./interfaces/IMateriaOrchestrator.sol",
            "id": 3,
            "nodeType": "ImportDirective",
            "scope": 778,
            "sourceUnit": 7666,
            "src": "89:47:0",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaFactory.sol",
            "file": "./interfaces/IMateriaFactory.sol",
            "id": 4,
            "nodeType": "ImportDirective",
            "scope": 778,
            "sourceUnit": 7181,
            "src": "137:42:0",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaPair.sol",
            "file": "./interfaces/IMateriaPair.sol",
            "id": 5,
            "nodeType": "ImportDirective",
            "scope": 778,
            "sourceUnit": 7945,
            "src": "180:39:0",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "./interfaces/IERC20.sol",
            "id": 6,
            "nodeType": "ImportDirective",
            "scope": 778,
            "sourceUnit": 6106,
            "src": "220:33:0",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20WrapperV1.sol",
            "file": "./interfaces/IERC20WrapperV1.sol",
            "id": 7,
            "nodeType": "ImportDirective",
            "scope": 778,
            "sourceUnit": 6162,
            "src": "254:42:0",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MateriaLibrary.sol",
            "file": "./libraries/MateriaLibrary.sol",
            "id": 8,
            "nodeType": "ImportDirective",
            "scope": 778,
            "sourceUnit": 8694,
            "src": "298:40:0",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/TransferHelper.sol",
            "file": "./libraries/TransferHelper.sol",
            "id": 9,
            "nodeType": "ImportDirective",
            "scope": 778,
            "sourceUnit": 9475,
            "src": "339:40:0",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 10,
                  "name": "MateriaOperator",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1926,
                  "src": "415:15:0"
                },
                "id": 11,
                "nodeType": "InheritanceSpecifier",
                "src": "415:15:0"
              }
            ],
            "contractDependencies": [
              1926,
              5971,
              6027
            ],
            "contractKind": "contract",
            "fullyImplemented": true,
            "id": 777,
            "linearizedBaseContracts": [
              777,
              1926,
              6027,
              5971
            ],
            "name": "MateriaLiquidityAdder",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 158,
                  "nodeType": "Block",
                  "src": "685:1184:0",
                  "statements": [
                    {
                      "assignments": [
                        31
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 31,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 158,
                          "src": "695:15:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 30,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "695:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 43,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 37,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "750:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                          "typeString": "contract MateriaLiquidityAdder"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                          "typeString": "contract MateriaLiquidityAdder"
                                        }
                                      ],
                                      "id": 36,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "742:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 35,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "742:7:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 38,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "742:13:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 34,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "721:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 39,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "721:35:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 40,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "721:43:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 41,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "721:45:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 33,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "713:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 32,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "713:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 42,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "713:54:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "695:72:0"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 55,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 48,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13,
                              "src": "866:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 49,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15,
                              "src": "874:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 45,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31,
                                  "src": "849:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 44,
                                "name": "IMateriaFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7180,
                                "src": "833:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMateriaFactory_$7180_$",
                                  "typeString": "type(contract IMateriaFactory)"
                                }
                              },
                              "id": 46,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "833:24:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                "typeString": "contract IMateriaFactory"
                              }
                            },
                            "id": 47,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPair",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7124,
                            "src": "833:32:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$",
                              "typeString": "function (address,address) view external returns (address)"
                            }
                          },
                          "id": 50,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "833:48:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 53,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "893:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 52,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "885:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 51,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "885:7:0",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 54,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "885:10:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "833:62:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 65,
                      "nodeType": "IfStatement",
                      "src": "829:144:0",
                      "trueBody": {
                        "id": 64,
                        "nodeType": "Block",
                        "src": "897:76:0",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 60,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13,
                                  "src": "947:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 61,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15,
                                  "src": "955:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 57,
                                      "name": "factory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31,
                                      "src": "927:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 56,
                                    "name": "IMateriaFactory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7180,
                                    "src": "911:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IMateriaFactory_$7180_$",
                                      "typeString": "type(contract IMateriaFactory)"
                                    }
                                  },
                                  "id": 58,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "911:24:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                    "typeString": "contract IMateriaFactory"
                                  }
                                },
                                "id": 59,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "createPair",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7145,
                                "src": "911:35:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address,address) external returns (address)"
                                }
                              },
                              "id": 62,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "911:51:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 63,
                            "nodeType": "ExpressionStatement",
                            "src": "911:51:0"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        67,
                        69
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 67,
                          "mutability": "mutable",
                          "name": "reserveA",
                          "nodeType": "VariableDeclaration",
                          "scope": 158,
                          "src": "983:16:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 66,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "983:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 69,
                          "mutability": "mutable",
                          "name": "reserveB",
                          "nodeType": "VariableDeclaration",
                          "scope": 158,
                          "src": "1001:16:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 68,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1001:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 79,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 74,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31,
                                "src": "1056:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 73,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1048:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 72,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1048:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 75,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1048:16:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 76,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13,
                            "src": "1066:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 77,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15,
                            "src": "1074:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 70,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "1021:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 71,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8367,
                          "src": "1021:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address) view returns (uint256,uint256)"
                          }
                        },
                        "id": 78,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1021:60:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "982:99:0"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 86,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 82,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 80,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 67,
                            "src": "1095:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 81,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1107:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1095:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 85,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 83,
                            "name": "reserveB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 69,
                            "src": "1112:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 84,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1124:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1112:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1095:30:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 156,
                        "nodeType": "Block",
                        "src": "1211:652:0",
                        "statements": [
                          {
                            "assignments": [
                              97
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 97,
                                "mutability": "mutable",
                                "name": "amountBOptimal",
                                "nodeType": "VariableDeclaration",
                                "scope": 156,
                                "src": "1225:22:0",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 96,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1225:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 104,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 100,
                                  "name": "amountADesired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17,
                                  "src": "1271:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 101,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 67,
                                  "src": "1287:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 102,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 69,
                                  "src": "1297:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 98,
                                  "name": "MateriaLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8693,
                                  "src": "1250:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                    "typeString": "type(library MateriaLibrary)"
                                  }
                                },
                                "id": 99,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "quote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8406,
                                "src": "1250:20:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1250:56:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1225:81:0"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 105,
                                "name": "amountBOptimal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 97,
                                "src": "1324:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 106,
                                "name": "amountBDesired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19,
                                "src": "1342:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1324:32:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 154,
                              "nodeType": "Block",
                              "src": "1530:323:0",
                              "statements": [
                                {
                                  "assignments": [
                                    125
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 125,
                                      "mutability": "mutable",
                                      "name": "amountAOptimal",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 154,
                                      "src": "1548:22:0",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 124,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1548:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 132,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "id": 128,
                                        "name": "amountBDesired",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19,
                                        "src": "1594:14:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 129,
                                        "name": "reserveB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 69,
                                        "src": "1610:8:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 130,
                                        "name": "reserveA",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 67,
                                        "src": "1620:8:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 126,
                                        "name": "MateriaLibrary",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8693,
                                        "src": "1573:14:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                          "typeString": "type(library MateriaLibrary)"
                                        }
                                      },
                                      "id": 127,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "quote",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 8406,
                                      "src": "1573:20:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 131,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1573:56:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "1548:81:0"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 136,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 134,
                                          "name": "amountAOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 125,
                                          "src": "1654:14:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<=",
                                        "rightExpression": {
                                          "id": 135,
                                          "name": "amountADesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17,
                                          "src": "1672:14:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1654:32:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 133,
                                      "name": "assert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967293,
                                      "src": "1647:6:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                                        "typeString": "function (bool) pure"
                                      }
                                    },
                                    "id": 137,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1647:40:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 138,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1647:40:0"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 142,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 140,
                                          "name": "amountAOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 125,
                                          "src": "1713:14:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "id": 141,
                                          "name": "amountAMin",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21,
                                          "src": "1731:10:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1713:28:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "494e53554646494349454e545f415f414d4f554e54",
                                        "id": 143,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1743:23:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_837daf7f7136574581108b0b0bf2d53e27cc5c3b07f1ec93c0a0d705b6f8e097",
                                          "typeString": "literal_string \"INSUFFICIENT_A_AMOUNT\""
                                        },
                                        "value": "INSUFFICIENT_A_AMOUNT"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_837daf7f7136574581108b0b0bf2d53e27cc5c3b07f1ec93c0a0d705b6f8e097",
                                          "typeString": "literal_string \"INSUFFICIENT_A_AMOUNT\""
                                        }
                                      ],
                                      "id": 139,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        4294967278,
                                        4294967278
                                      ],
                                      "referencedDeclaration": 4294967278,
                                      "src": "1705:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 144,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1705:62:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 145,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1705:62:0"
                                },
                                {
                                  "expression": {
                                    "id": 152,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "components": [
                                        {
                                          "id": 146,
                                          "name": "amountA",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26,
                                          "src": "1786:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 147,
                                          "name": "amountB",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 28,
                                          "src": "1795:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 148,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "1785:18:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "id": 149,
                                          "name": "amountAOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 125,
                                          "src": "1807:14:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 150,
                                          "name": "amountBDesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19,
                                          "src": "1823:14:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 151,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "1806:32:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "src": "1785:53:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 153,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1785:53:0"
                                }
                              ]
                            },
                            "id": 155,
                            "nodeType": "IfStatement",
                            "src": "1320:533:0",
                            "trueBody": {
                              "id": 123,
                              "nodeType": "Block",
                              "src": "1358:166:0",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 111,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 109,
                                          "name": "amountBOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 97,
                                          "src": "1384:14:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "id": 110,
                                          "name": "amountBMin",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23,
                                          "src": "1402:10:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1384:28:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "494e53554646494349454e545f425f414d4f554e54",
                                        "id": 112,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1414:23:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_98cc91c53caf1aec6161fa73357ae42d82801144a6e8d241c4a58703b89ebf46",
                                          "typeString": "literal_string \"INSUFFICIENT_B_AMOUNT\""
                                        },
                                        "value": "INSUFFICIENT_B_AMOUNT"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_98cc91c53caf1aec6161fa73357ae42d82801144a6e8d241c4a58703b89ebf46",
                                          "typeString": "literal_string \"INSUFFICIENT_B_AMOUNT\""
                                        }
                                      ],
                                      "id": 108,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        4294967278,
                                        4294967278
                                      ],
                                      "referencedDeclaration": 4294967278,
                                      "src": "1376:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 113,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1376:62:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 114,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1376:62:0"
                                },
                                {
                                  "expression": {
                                    "id": 121,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "components": [
                                        {
                                          "id": 115,
                                          "name": "amountA",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26,
                                          "src": "1457:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 116,
                                          "name": "amountB",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 28,
                                          "src": "1466:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 117,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "1456:18:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "id": 118,
                                          "name": "amountADesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17,
                                          "src": "1478:14:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 119,
                                          "name": "amountBOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 97,
                                          "src": "1494:14:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 120,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "1477:32:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "src": "1456:53:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 122,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1456:53:0"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "id": 157,
                      "nodeType": "IfStatement",
                      "src": "1091:772:0",
                      "trueBody": {
                        "id": 95,
                        "nodeType": "Block",
                        "src": "1127:78:0",
                        "statements": [
                          {
                            "expression": {
                              "id": 93,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "components": [
                                  {
                                    "id": 87,
                                    "name": "amountA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26,
                                    "src": "1142:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 88,
                                    "name": "amountB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28,
                                    "src": "1151:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 89,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "1141:18:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "components": [
                                  {
                                    "id": 90,
                                    "name": "amountADesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17,
                                    "src": "1163:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 91,
                                    "name": "amountBDesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19,
                                    "src": "1179:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 92,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1162:32:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "src": "1141:53:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 94,
                            "nodeType": "ExpressionStatement",
                            "src": "1141:53:0"
                          }
                        ]
                      }
                    }
                  ]
                },
                "id": 159,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_addLiquidity",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 24,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 13,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 159,
                      "src": "469:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "469:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 15,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 159,
                      "src": "493:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 14,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "493:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17,
                      "mutability": "mutable",
                      "name": "amountADesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 159,
                      "src": "517:22:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 16,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "517:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 19,
                      "mutability": "mutable",
                      "name": "amountBDesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 159,
                      "src": "549:22:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "549:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 159,
                      "src": "581:18:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 20,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "581:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 23,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 159,
                      "src": "609:18:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "609:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "459:174:0"
                },
                "returnParameters": {
                  "id": 29,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 26,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "scope": 159,
                      "src": "651:15:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "651:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 28,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "scope": 159,
                      "src": "668:15:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 27,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "668:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "650:34:0"
                },
                "scope": 777,
                "src": "437:1432:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 241,
                  "nodeType": "Block",
                  "src": "2261:570:0",
                  "statements": [
                    {
                      "expression": {
                        "id": 193,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 182,
                              "name": "tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 176,
                              "src": "2272:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 183,
                              "name": "bridgeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 178,
                              "src": "2285:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 184,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "2271:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 186,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 161,
                              "src": "2328:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 187,
                              "name": "bridgeToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 163,
                              "src": "2347:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 188,
                              "name": "tokenAmountDesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 165,
                              "src": "2372:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 189,
                              "name": "bridgeAmountDesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 167,
                              "src": "2404:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 190,
                              "name": "tokenAmountMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 169,
                              "src": "2437:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 191,
                              "name": "bridgeAmountMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 171,
                              "src": "2465:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 185,
                            "name": "_addLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 159,
                            "src": "2301:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2301:189:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "2271:219:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 194,
                      "nodeType": "ExpressionStatement",
                      "src": "2271:219:0"
                    },
                    {
                      "assignments": [
                        196
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 196,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "scope": 241,
                          "src": "2501:12:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 195,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2501:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 213,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 204,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967268,
                                            "src": "2588:4:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                              "typeString": "contract MateriaLiquidityAdder"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                              "typeString": "contract MateriaLiquidityAdder"
                                            }
                                          ],
                                          "id": 203,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "2580:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 202,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2580:7:0",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 205,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2580:13:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 201,
                                      "name": "IMateriaOrchestrator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7665,
                                      "src": "2559:20:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                        "typeString": "type(contract IMateriaOrchestrator)"
                                      }
                                    },
                                    "id": 206,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2559:35:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                      "typeString": "contract IMateriaOrchestrator"
                                    }
                                  },
                                  "id": 207,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "factory",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7290,
                                  "src": "2559:43:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                    "typeString": "function () view external returns (contract IMateriaFactory)"
                                  }
                                },
                                "id": 208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2559:45:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                  "typeString": "contract IMateriaFactory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                  "typeString": "contract IMateriaFactory"
                                }
                              ],
                              "id": 200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2551:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 199,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2551:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2551:54:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 210,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 161,
                            "src": "2607:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 211,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "2614:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 197,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "2528:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8317,
                          "src": "2528:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 212,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2528:98:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2501:125:0"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 217,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 161,
                            "src": "2664:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 218,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 196,
                            "src": "2671:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 219,
                            "name": "tokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 176,
                            "src": "2677:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 214,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "2636:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "2636:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2636:53:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 221,
                      "nodeType": "ExpressionStatement",
                      "src": "2636:53:0"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 225,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "2731:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 226,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "2744:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "2744:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 228,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 196,
                            "src": "2756:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 229,
                            "name": "bridgeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 178,
                            "src": "2762:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 222,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "2699:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9448,
                          "src": "2699:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2699:76:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 231,
                      "nodeType": "ExpressionStatement",
                      "src": "2699:76:0"
                    },
                    {
                      "expression": {
                        "id": 239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 232,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 180,
                          "src": "2785:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 237,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 173,
                              "src": "2821:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 234,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 196,
                                  "src": "2810:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 233,
                                "name": "IMateriaPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7944,
                                "src": "2797:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                                  "typeString": "type(contract IMateriaPair)"
                                }
                              },
                              "id": 235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2797:18:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                                "typeString": "contract IMateriaPair"
                              }
                            },
                            "id": 236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7871,
                            "src": "2797:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) external returns (uint256)"
                            }
                          },
                          "id": 238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2797:27:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2785:39:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 240,
                      "nodeType": "ExpressionStatement",
                      "src": "2785:39:0"
                    }
                  ]
                },
                "id": 242,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_doAddLiquidity",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 174,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 161,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 242,
                      "src": "1909:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 160,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1909:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 163,
                      "mutability": "mutable",
                      "name": "bridgeToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 242,
                      "src": "1932:19:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 162,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1932:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 165,
                      "mutability": "mutable",
                      "name": "tokenAmountDesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 242,
                      "src": "1961:26:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 164,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1961:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 167,
                      "mutability": "mutable",
                      "name": "bridgeAmountDesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 242,
                      "src": "1997:27:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 166,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1997:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 169,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 242,
                      "src": "2034:22:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 168,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2034:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 171,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 242,
                      "src": "2066:23:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 170,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2066:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 173,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 242,
                      "src": "2099:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 172,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2099:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1899:216:0"
                },
                "returnParameters": {
                  "id": 181,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 176,
                      "mutability": "mutable",
                      "name": "tokenAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 242,
                      "src": "2162:19:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 175,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2162:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 178,
                      "mutability": "mutable",
                      "name": "bridgeAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 242,
                      "src": "2195:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 177,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2195:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 180,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 242,
                      "src": "2229:17:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 179,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2229:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2148:108:0"
                },
                "scope": 777,
                "src": "1875:956:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 355,
                  "nodeType": "Block",
                  "src": "3096:912:0",
                  "statements": [
                    {
                      "assignments": [
                        263
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 263,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 355,
                          "src": "3106:20:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 262,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3106:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 275,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 269,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "3166:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                          "typeString": "contract MateriaLiquidityAdder"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                          "typeString": "contract MateriaLiquidityAdder"
                                        }
                                      ],
                                      "id": 268,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3158:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 267,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3158:7:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 270,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3158:13:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 266,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "3137:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3137:35:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "3137:48:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3137:50:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3129:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 264,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3129:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 274,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3129:59:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3106:82:0"
                    },
                    {
                      "assignments": [
                        277
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 277,
                          "mutability": "mutable",
                          "name": "interoperable",
                          "nodeType": "VariableDeclaration",
                          "scope": 355,
                          "src": "3198:21:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 276,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3198:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 278,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3198:21:0"
                    },
                    {
                      "expression": {
                        "id": 284,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 279,
                          "name": "tokenAmountMin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 250,
                          "src": "3230:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 281,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 244,
                              "src": "3261:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 282,
                              "name": "tokenAmountMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 250,
                              "src": "3268:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 280,
                            "name": "_adjustAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1836,
                            "src": "3247:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256) view returns (uint256)"
                            }
                          },
                          "id": 283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3247:36:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3230:53:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 285,
                      "nodeType": "ExpressionStatement",
                      "src": "3230:53:0"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 289,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 244,
                            "src": "3326:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 290,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "3333:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "3333:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 294,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "3353:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                  "typeString": "contract MateriaLiquidityAdder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                  "typeString": "contract MateriaLiquidityAdder"
                                }
                              ],
                              "id": 293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3345:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 292,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3345:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3345:13:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 296,
                            "name": "tokenAmountDesired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 246,
                            "src": "3360:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 286,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "3294:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9448,
                          "src": "3294:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3294:85:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 298,
                      "nodeType": "ExpressionStatement",
                      "src": "3294:85:0"
                    },
                    {
                      "expression": {
                        "id": 307,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 299,
                              "name": "interoperable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 277,
                              "src": "3390:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 300,
                              "name": "tokenAmountDesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 246,
                              "src": "3405:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 301,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "3389:35:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                            "typeString": "tuple(address,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 303,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 244,
                              "src": "3438:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 304,
                              "name": "tokenAmountDesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 246,
                              "src": "3445:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 305,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 263,
                              "src": "3465:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 302,
                            "name": "_wrapErc20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1724,
                            "src": "3427:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$_t_uint256_$",
                              "typeString": "function (address,uint256,address) returns (address,uint256)"
                            }
                          },
                          "id": 306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3427:51:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                            "typeString": "tuple(address,uint256)"
                          }
                        },
                        "src": "3389:89:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 308,
                      "nodeType": "ExpressionStatement",
                      "src": "3389:89:0"
                    },
                    {
                      "assignments": [
                        310,
                        null,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 310,
                          "mutability": "mutable",
                          "name": "tokenAmount",
                          "nodeType": "VariableDeclaration",
                          "scope": 355,
                          "src": "3490:19:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 309,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3490:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        },
                        null,
                        null
                      ],
                      "id": 330,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 312,
                            "name": "interoperable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 277,
                            "src": "3562:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 318,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967268,
                                            "src": "3630:4:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                              "typeString": "contract MateriaLiquidityAdder"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                              "typeString": "contract MateriaLiquidityAdder"
                                            }
                                          ],
                                          "id": 317,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3622:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 316,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3622:7:0",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 319,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3622:13:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 315,
                                      "name": "IMateriaOrchestrator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7665,
                                      "src": "3601:20:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                        "typeString": "type(contract IMateriaOrchestrator)"
                                      }
                                    },
                                    "id": 320,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3601:35:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                      "typeString": "contract IMateriaOrchestrator"
                                    }
                                  },
                                  "id": 321,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "bridgeToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7296,
                                  "src": "3601:47:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                    "typeString": "function () view external returns (contract IERC20)"
                                  }
                                },
                                "id": 322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3601:49:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$6105",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$6105",
                                  "typeString": "contract IERC20"
                                }
                              ],
                              "id": 314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3593:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 313,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3593:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3593:58:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 324,
                            "name": "tokenAmountDesired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 246,
                            "src": "3669:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 325,
                            "name": "bridgeAmountDesired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 248,
                            "src": "3705:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 326,
                            "name": "tokenAmountMin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 250,
                            "src": "3742:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 327,
                            "name": "bridgeAmountMin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 252,
                            "src": "3774:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 328,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 254,
                            "src": "3807:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 311,
                          "name": "_doAddLiquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 242,
                          "src": "3529:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,uint256,uint256,uint256,uint256,address) returns (uint256,uint256,uint256)"
                          }
                        },
                        "id": 329,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3529:294:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3489:334:0"
                    },
                    {
                      "assignments": [
                        332
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 332,
                          "mutability": "mutable",
                          "name": "dust",
                          "nodeType": "VariableDeclaration",
                          "scope": 355,
                          "src": "3834:12:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 331,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3834:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 336,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 333,
                          "name": "tokenAmountDesired",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 246,
                          "src": "3849:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "id": 334,
                          "name": "tokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 310,
                          "src": "3870:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3849:32:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3834:47:0"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 339,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 337,
                          "name": "dust",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 332,
                          "src": "3895:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3902:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3895:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 354,
                      "nodeType": "IfStatement",
                      "src": "3891:110:0",
                      "trueBody": {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 345,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 244,
                                  "src": "3955:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 342,
                                      "name": "erc20Wrapper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 263,
                                      "src": "3934:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 341,
                                    "name": "IERC20WrapperV1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6161,
                                    "src": "3918:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                      "typeString": "type(contract IERC20WrapperV1)"
                                    }
                                  },
                                  "id": 343,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3918:29:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                    "typeString": "contract IERC20WrapperV1"
                                  }
                                },
                                "id": 344,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "object",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6141,
                                "src": "3918:36:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 346,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3918:43:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 347,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 244,
                              "src": "3963:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 348,
                              "name": "dust",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 332,
                              "src": "3970:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 349,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 263,
                              "src": "3976:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 350,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "3990:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3990:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 340,
                            "name": "_unwrapErc20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1762,
                            "src": "3905:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address,uint256,address,address)"
                            }
                          },
                          "id": 352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3905:96:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 353,
                        "nodeType": "ExpressionStatement",
                        "src": "3905:96:0"
                      }
                    }
                  ]
                },
                "functionSelector": "9187aaca",
                "id": 356,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 259,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 256,
                        "src": "3086:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 260,
                    "modifierName": {
                      "id": 258,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "3079:6:0"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3079:16:0"
                  }
                ],
                "name": "addLiquidity",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 257,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 244,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 356,
                      "src": "2868:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 243,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2868:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 246,
                      "mutability": "mutable",
                      "name": "tokenAmountDesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 356,
                      "src": "2891:26:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 245,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2891:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 248,
                      "mutability": "mutable",
                      "name": "bridgeAmountDesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 356,
                      "src": "2927:27:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 247,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2927:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 250,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 356,
                      "src": "2964:22:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 249,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2964:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 252,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 356,
                      "src": "2996:23:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 251,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2996:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 254,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 356,
                      "src": "3029:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 253,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3029:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 256,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 356,
                      "src": "3049:16:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 255,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3049:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2858:213:0"
                },
                "returnParameters": {
                  "id": 261,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3096:0:0"
                },
                "scope": 777,
                "src": "2837:1171:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 514,
                  "nodeType": "Block",
                  "src": "4374:1127:0",
                  "statements": [
                    {
                      "assignments": [
                        379
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 379,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 514,
                          "src": "4384:20:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 378,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4384:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 391,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 385,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "4444:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                          "typeString": "contract MateriaLiquidityAdder"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                          "typeString": "contract MateriaLiquidityAdder"
                                        }
                                      ],
                                      "id": 384,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4436:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 383,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4436:7:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 386,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4436:13:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 382,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "4415:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4415:35:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "4415:48:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 389,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4415:50:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4407:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 380,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4407:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 390,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4407:59:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4384:82:0"
                    },
                    {
                      "assignments": [
                        393
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 393,
                          "mutability": "mutable",
                          "name": "bridgeToken",
                          "nodeType": "VariableDeclaration",
                          "scope": 514,
                          "src": "4476:19:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 392,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4476:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 405,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 399,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "4535:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                          "typeString": "contract MateriaLiquidityAdder"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                          "typeString": "contract MateriaLiquidityAdder"
                                        }
                                      ],
                                      "id": 398,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4527:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 397,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4527:7:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 400,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4527:13:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 396,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "4506:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4506:35:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 402,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bridgeToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7296,
                              "src": "4506:47:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                "typeString": "function () view external returns (contract IERC20)"
                              }
                            },
                            "id": 403,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4506:49:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          ],
                          "id": 395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4498:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 394,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4498:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 404,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4498:58:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4476:80:0"
                    },
                    {
                      "assignments": [
                        407
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 407,
                          "mutability": "mutable",
                          "name": "ieth",
                          "nodeType": "VariableDeclaration",
                          "scope": 514,
                          "src": "4567:12:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 406,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4567:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 427,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "id": 419,
                                                "name": "this",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967268,
                                                "src": "4723:4:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                                  "typeString": "contract MateriaLiquidityAdder"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                                  "typeString": "contract MateriaLiquidityAdder"
                                                }
                                              ],
                                              "id": 418,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "4715:7:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 417,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4715:7:0",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 420,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4715:13:0",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 416,
                                          "name": "IMateriaOrchestrator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7665,
                                          "src": "4694:20:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                            "typeString": "type(contract IMateriaOrchestrator)"
                                          }
                                        },
                                        "id": 421,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4694:35:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                          "typeString": "contract IMateriaOrchestrator"
                                        }
                                      },
                                      "id": 422,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "ETHEREUM_OBJECT_ID",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7307,
                                      "src": "4694:54:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                        "typeString": "function () view external returns (uint256)"
                                      }
                                    },
                                    "id": 423,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4694:56:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 415,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4686:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 414,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4686:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4686:65:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 411,
                                    "name": "erc20Wrapper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 379,
                                    "src": "4635:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 410,
                                  "name": "IERC20WrapperV1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6161,
                                  "src": "4619:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                    "typeString": "type(contract IERC20WrapperV1)"
                                  }
                                },
                                "id": 412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4619:29:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                  "typeString": "contract IERC20WrapperV1"
                                }
                              },
                              "id": 413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asInteroperable",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6310,
                              "src": "4619:45:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                              }
                            },
                            "id": 425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4619:150:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                              "typeString": "contract IEthItemInteroperableInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                              "typeString": "contract IEthItemInteroperableInterface"
                            }
                          ],
                          "id": 409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4594:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 408,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4594:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 426,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4594:189:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4567:216:0"
                    },
                    {
                      "expression": {
                        "id": 440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 428,
                              "name": "ethAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 372,
                              "src": "4795:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 429,
                              "name": "bridgeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 374,
                              "src": "4806:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 430,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "4794:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 432,
                              "name": "ieth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 407,
                              "src": "4849:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 433,
                              "name": "bridgeToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 393,
                              "src": "4867:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 434,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "4892:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "src": "4892:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 436,
                              "name": "bridgeAmountDesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 358,
                              "src": "4915:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 437,
                              "name": "ethAmountMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 360,
                              "src": "4948:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 438,
                              "name": "bridgeAmountMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 362,
                              "src": "4974:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 431,
                            "name": "_addLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 159,
                            "src": "4822:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4822:177:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "4794:205:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 441,
                      "nodeType": "ExpressionStatement",
                      "src": "4794:205:0"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 443,
                            "name": "ethAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 372,
                            "src": "5019:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 444,
                            "name": "erc20Wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 379,
                            "src": "5030:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 442,
                          "name": "_wrapEth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1810,
                          "src": "5010:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$",
                            "typeString": "function (uint256,address) returns (address)"
                          }
                        },
                        "id": 445,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5010:33:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 446,
                      "nodeType": "ExpressionStatement",
                      "src": "5010:33:0"
                    },
                    {
                      "assignments": [
                        448
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 448,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "scope": 514,
                          "src": "5054:12:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 447,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5054:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 465,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 456,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967268,
                                            "src": "5141:4:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                              "typeString": "contract MateriaLiquidityAdder"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                              "typeString": "contract MateriaLiquidityAdder"
                                            }
                                          ],
                                          "id": 455,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "5133:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 454,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "5133:7:0",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 457,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5133:13:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 453,
                                      "name": "IMateriaOrchestrator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7665,
                                      "src": "5112:20:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                        "typeString": "type(contract IMateriaOrchestrator)"
                                      }
                                    },
                                    "id": 458,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5112:35:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                      "typeString": "contract IMateriaOrchestrator"
                                    }
                                  },
                                  "id": 459,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "factory",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7290,
                                  "src": "5112:43:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                    "typeString": "function () view external returns (contract IMateriaFactory)"
                                  }
                                },
                                "id": 460,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5112:45:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                  "typeString": "contract IMateriaFactory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                  "typeString": "contract IMateriaFactory"
                                }
                              ],
                              "id": 452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5104:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 451,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5104:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5104:54:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 462,
                            "name": "ieth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 407,
                            "src": "5160:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 463,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 393,
                            "src": "5166:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 449,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "5081:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8317,
                          "src": "5081:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 464,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5081:97:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5054:124:0"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 469,
                            "name": "ieth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 407,
                            "src": "5216:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 470,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 448,
                            "src": "5222:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 471,
                            "name": "ethAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 372,
                            "src": "5228:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 466,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "5188:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "5188:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5188:50:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 473,
                      "nodeType": "ExpressionStatement",
                      "src": "5188:50:0"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 477,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 393,
                            "src": "5280:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 478,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "5293:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "5293:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 480,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 448,
                            "src": "5305:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 481,
                            "name": "bridgeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 374,
                            "src": "5311:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 474,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "5248:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9448,
                          "src": "5248:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5248:76:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 483,
                      "nodeType": "ExpressionStatement",
                      "src": "5248:76:0"
                    },
                    {
                      "expression": {
                        "id": 491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 484,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 376,
                          "src": "5334:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 489,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 364,
                              "src": "5370:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 486,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 448,
                                  "src": "5359:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 485,
                                "name": "IMateriaPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7944,
                                "src": "5346:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                                  "typeString": "type(contract IMateriaPair)"
                                }
                              },
                              "id": 487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5346:18:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                                "typeString": "contract IMateriaPair"
                              }
                            },
                            "id": 488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7871,
                            "src": "5346:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) external returns (uint256)"
                            }
                          },
                          "id": 490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5346:27:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5334:39:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 492,
                      "nodeType": "ExpressionStatement",
                      "src": "5334:39:0"
                    },
                    {
                      "assignments": [
                        494
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 494,
                          "mutability": "mutable",
                          "name": "dust",
                          "nodeType": "VariableDeclaration",
                          "scope": 514,
                          "src": "5384:12:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 493,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5384:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 495,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5384:12:0"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "components": [
                            {
                              "id": 501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 496,
                                "name": "dust",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 494,
                                "src": "5411:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 497,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967281,
                                    "src": "5418:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 498,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "src": "5418:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 499,
                                  "name": "ethAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 372,
                                  "src": "5430:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5418:21:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5411:28:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 502,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5410:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5443:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5410:34:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 513,
                      "nodeType": "IfStatement",
                      "src": "5406:88:0",
                      "trueBody": {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 508,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "5477:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "5477:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 510,
                              "name": "dust",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "5489:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 505,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9474,
                              "src": "5446:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9473,
                            "src": "5446:30:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5446:48:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 512,
                        "nodeType": "ExpressionStatement",
                        "src": "5446:48:0"
                      }
                    }
                  ]
                },
                "functionSelector": "bb8a88bb",
                "id": 515,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 369,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "4237:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 370,
                    "modifierName": {
                      "id": 368,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "4230:6:0"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "4230:16:0"
                  }
                ],
                "name": "addLiquidityETH",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 367,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 358,
                      "mutability": "mutable",
                      "name": "bridgeAmountDesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 515,
                      "src": "4048:27:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 357,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4048:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 360,
                      "mutability": "mutable",
                      "name": "ethAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 515,
                      "src": "4085:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 359,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4085:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 362,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 515,
                      "src": "4115:23:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 361,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4115:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 364,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 515,
                      "src": "4148:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 363,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4148:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 366,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 515,
                      "src": "4168:16:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 365,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4168:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4038:152:0"
                },
                "returnParameters": {
                  "id": 377,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 372,
                      "mutability": "mutable",
                      "name": "ethAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 515,
                      "src": "4277:17:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 371,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4277:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 374,
                      "mutability": "mutable",
                      "name": "bridgeAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 515,
                      "src": "4308:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 373,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4308:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 376,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 515,
                      "src": "4342:17:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 375,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4342:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4263:106:0"
                },
                "scope": 777,
                "src": "4014:1487:0",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 684,
                  "nodeType": "Block",
                  "src": "5725:1232:0",
                  "statements": [
                    {
                      "assignments": [
                        533
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 533,
                          "mutability": "mutable",
                          "name": "bridgeToken",
                          "nodeType": "VariableDeclaration",
                          "scope": 684,
                          "src": "5735:19:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 532,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5735:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 545,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 539,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "5794:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                          "typeString": "contract MateriaLiquidityAdder"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                          "typeString": "contract MateriaLiquidityAdder"
                                        }
                                      ],
                                      "id": 538,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5786:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 537,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5786:7:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 540,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5786:13:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 536,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "5765:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5765:35:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 542,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bridgeToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7296,
                              "src": "5765:47:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                "typeString": "function () view external returns (contract IERC20)"
                              }
                            },
                            "id": 543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5765:49:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          ],
                          "id": 535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5757:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 534,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5757:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5757:58:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5735:80:0"
                    },
                    {
                      "assignments": [
                        547
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 547,
                          "mutability": "mutable",
                          "name": "bridgeAmountDesired",
                          "nodeType": "VariableDeclaration",
                          "scope": 684,
                          "src": "5826:27:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 546,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5826:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 548,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5826:27:0"
                    },
                    {
                      "assignments": [
                        550
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 550,
                          "mutability": "mutable",
                          "name": "to",
                          "nodeType": "VariableDeclaration",
                          "scope": 684,
                          "src": "5863:10:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 549,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5863:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 551,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5863:10:0"
                    },
                    {
                      "assignments": [
                        553
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 553,
                          "mutability": "mutable",
                          "name": "deadline",
                          "nodeType": "VariableDeclaration",
                          "scope": 684,
                          "src": "5883:16:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 552,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5883:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 554,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5883:16:0"
                    },
                    {
                      "assignments": [
                        556
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 556,
                          "mutability": "mutable",
                          "name": "token",
                          "nodeType": "VariableDeclaration",
                          "scope": 684,
                          "src": "5909:13:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 555,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5909:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 557,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5909:13:0"
                    },
                    {
                      "expression": {
                        "id": 579,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 558,
                              "name": "bridgeAmountDesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 547,
                              "src": "5934:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 559,
                              "name": "itemAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 528,
                              "src": "5955:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 560,
                              "name": "bridgeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 530,
                              "src": "5967:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 561,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 550,
                              "src": "5981:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 562,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 553,
                              "src": "5985:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 563,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "5933:61:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,address,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 566,
                              "name": "payload",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 525,
                              "src": "6021:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 568,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6043:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 567,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6043:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 570,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6052:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 569,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6052:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 572,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6061:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 571,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6061:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 574,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6070:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 573,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6070:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 576,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6079:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 575,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6079:7:0",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 577,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6042:45:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(uint256),type(uint256),type(uint256),type(address),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(uint256),type(uint256),type(uint256),type(address),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 564,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967295,
                              "src": "5997:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "5997:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5997:100:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,address payable,uint256)"
                          }
                        },
                        "src": "5933:164:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 580,
                      "nodeType": "ExpressionStatement",
                      "src": "5933:164:0"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 582,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 553,
                            "src": "6116:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 581,
                          "name": "_ensure",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1613,
                          "src": "6108:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6108:17:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 584,
                      "nodeType": "ExpressionStatement",
                      "src": "6108:17:0"
                    },
                    {
                      "expression": {
                        "id": 598,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 585,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 521,
                          "src": "6136:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 590,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 587,
                                  "name": "collection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 517,
                                  "src": "6164:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 586,
                                "name": "_collectionDecimals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1925,
                                "src": "6144:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6144:31:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6179:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6144:36:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "id": 596,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 521,
                            "src": "6200:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "6144:61:0",
                          "trueExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 591,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 521,
                              "src": "6183:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              },
                              "id": 594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "3130",
                                "id": 592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6191:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "hexValue": "3138",
                                "id": 593,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6195:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_18_by_1",
                                  "typeString": "int_const 18"
                                },
                                "value": "18"
                              },
                              "src": "6191:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              }
                            },
                            "src": "6183:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6136:69:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 599,
                      "nodeType": "ExpressionStatement",
                      "src": "6136:69:0"
                    },
                    {
                      "expression": {
                        "id": 622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 600,
                              "name": "itemAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 528,
                              "src": "6217:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 601,
                              "name": "bridgeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 530,
                              "src": "6229:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 602,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "6216:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "components": [
                                {
                                  "id": 614,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 604,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 556,
                                    "src": "6273:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 611,
                                            "name": "itemId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 519,
                                            "src": "6339:6:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 608,
                                                "name": "collection",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 517,
                                                "src": "6311:10:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 607,
                                              "name": "IEthItemMainInterface",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6365,
                                              "src": "6289:21:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IEthItemMainInterface_$6365_$",
                                                "typeString": "type(contract IEthItemMainInterface)"
                                              }
                                            },
                                            "id": 609,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "6289:33:0",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IEthItemMainInterface_$6365",
                                              "typeString": "contract IEthItemMainInterface"
                                            }
                                          },
                                          "id": 610,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "asInteroperable",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6310,
                                          "src": "6289:49:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                            "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                          }
                                        },
                                        "id": 612,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6289:57:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                          "typeString": "contract IEthItemInteroperableInterface"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                          "typeString": "contract IEthItemInteroperableInterface"
                                        }
                                      ],
                                      "id": 606,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6281:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 605,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6281:7:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 613,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6281:66:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "6273:74:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "id": 615,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6272:76:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 616,
                              "name": "bridgeToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 533,
                              "src": "6362:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 617,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 521,
                              "src": "6387:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 618,
                              "name": "bridgeAmountDesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 547,
                              "src": "6406:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 619,
                              "name": "itemAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 528,
                              "src": "6439:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 620,
                              "name": "bridgeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 530,
                              "src": "6463:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 603,
                            "name": "_addLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 159,
                            "src": "6245:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6245:240:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "6216:269:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 623,
                      "nodeType": "ExpressionStatement",
                      "src": "6216:269:0"
                    },
                    {
                      "assignments": [
                        625
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 625,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "scope": 684,
                          "src": "6504:12:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 624,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6504:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 642,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 633,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967268,
                                            "src": "6591:4:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                              "typeString": "contract MateriaLiquidityAdder"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                                              "typeString": "contract MateriaLiquidityAdder"
                                            }
                                          ],
                                          "id": 632,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "6583:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 631,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "6583:7:0",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 634,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6583:13:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 630,
                                      "name": "IMateriaOrchestrator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7665,
                                      "src": "6562:20:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                        "typeString": "type(contract IMateriaOrchestrator)"
                                      }
                                    },
                                    "id": 635,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6562:35:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                      "typeString": "contract IMateriaOrchestrator"
                                    }
                                  },
                                  "id": 636,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "factory",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7290,
                                  "src": "6562:43:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                    "typeString": "function () view external returns (contract IMateriaFactory)"
                                  }
                                },
                                "id": 637,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6562:45:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                  "typeString": "contract IMateriaFactory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                  "typeString": "contract IMateriaFactory"
                                }
                              ],
                              "id": 629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6554:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 628,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6554:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6554:54:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 639,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 556,
                            "src": "6610:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 640,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 533,
                            "src": "6617:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 626,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "6531:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8317,
                          "src": "6531:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 641,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6531:98:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6504:125:0"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 646,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 556,
                            "src": "6667:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 647,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 625,
                            "src": "6674:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 648,
                            "name": "itemAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 528,
                            "src": "6680:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 643,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "6639:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "6639:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6639:52:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 650,
                      "nodeType": "ExpressionStatement",
                      "src": "6639:52:0"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 654,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 533,
                            "src": "6733:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 655,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 523,
                            "src": "6746:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 656,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 625,
                            "src": "6752:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 657,
                            "name": "bridgeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 530,
                            "src": "6758:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 651,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "6701:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9448,
                          "src": "6701:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 658,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6701:70:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 659,
                      "nodeType": "ExpressionStatement",
                      "src": "6701:70:0"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 664,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 550,
                            "src": "6805:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 661,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 625,
                                "src": "6794:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 660,
                              "name": "IMateriaPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7944,
                              "src": "6781:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                                "typeString": "type(contract IMateriaPair)"
                              }
                            },
                            "id": 662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6781:18:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                              "typeString": "contract IMateriaPair"
                            }
                          },
                          "id": 663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mint",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7871,
                          "src": "6781:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) external returns (uint256)"
                          }
                        },
                        "id": 665,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6781:27:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 666,
                      "nodeType": "ExpressionStatement",
                      "src": "6781:27:0"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 674,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "components": [
                            {
                              "id": 671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 667,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 521,
                                "src": "6870:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 668,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 521,
                                  "src": "6878:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 669,
                                  "name": "itemAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 528,
                                  "src": "6886:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6878:18:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6870:26:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 672,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6869:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6900:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6869:32:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 683,
                      "nodeType": "IfStatement",
                      "src": "6865:85:0",
                      "trueBody": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 678,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 556,
                              "src": "6931:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 679,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 523,
                              "src": "6938:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 680,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 521,
                              "src": "6944:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 675,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9474,
                              "src": "6903:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9402,
                            "src": "6903:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6903:47:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 682,
                        "nodeType": "ExpressionStatement",
                        "src": "6903:47:0"
                      }
                    }
                  ]
                },
                "id": 685,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "addLiquidityItem",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 526,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 517,
                      "mutability": "mutable",
                      "name": "collection",
                      "nodeType": "VariableDeclaration",
                      "scope": 685,
                      "src": "5542:18:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 516,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5542:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 519,
                      "mutability": "mutable",
                      "name": "itemId",
                      "nodeType": "VariableDeclaration",
                      "scope": 685,
                      "src": "5570:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 518,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5570:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 521,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 685,
                      "src": "5594:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 520,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5594:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 523,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 685,
                      "src": "5617:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 522,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5617:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 525,
                      "mutability": "mutable",
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 685,
                      "src": "5639:20:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 524,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5639:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5532:133:0"
                },
                "returnParameters": {
                  "id": 531,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 528,
                      "mutability": "mutable",
                      "name": "itemAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 685,
                      "src": "5683:18:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 527,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5683:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 530,
                      "mutability": "mutable",
                      "name": "bridgeAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 685,
                      "src": "5703:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 529,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5703:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5682:42:0"
                },
                "scope": 777,
                "src": "5507:1450:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "baseFunctions": [
                  5952
                ],
                "body": {
                  "id": 742,
                  "nodeType": "Block",
                  "src": "7144:305:0",
                  "statements": [
                    {
                      "assignments": [
                        702
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 702,
                          "mutability": "mutable",
                          "name": "operation",
                          "nodeType": "VariableDeclaration",
                          "scope": 742,
                          "src": "7154:17:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 701,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7154:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 703,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7154:17:0"
                    },
                    {
                      "assignments": [
                        705
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 705,
                          "mutability": "mutable",
                          "name": "payload",
                          "nodeType": "VariableDeclaration",
                          "scope": 742,
                          "src": "7181:20:0",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 704,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "7181:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 706,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7181:20:0"
                    },
                    {
                      "expression": {
                        "id": 719,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 707,
                              "name": "operation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 702,
                              "src": "7213:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 708,
                              "name": "payload",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 705,
                              "src": "7224:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 709,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "7212:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(uint256,bytes memory)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 712,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 695,
                              "src": "7246:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 714,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7253:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 713,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7253:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7262:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 715,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7262:5:0",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 717,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7252:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(uint256),type(bytes storage pointer))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(uint256),type(bytes storage pointer))"
                              }
                            ],
                            "expression": {
                              "id": 710,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967295,
                              "src": "7235:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "7235:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7235:34:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(uint256,bytes memory)"
                          }
                        },
                        "src": "7212:57:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 720,
                      "nodeType": "ExpressionStatement",
                      "src": "7212:57:0"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 721,
                          "name": "operation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 702,
                          "src": "7284:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "31",
                          "id": 722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7297:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "7284:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 734,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967277,
                              4294967277
                            ],
                            "referencedDeclaration": 4294967277,
                            "src": "7385:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7385:8:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 736,
                        "nodeType": "ExpressionStatement",
                        "src": "7385:8:0"
                      },
                      "id": 737,
                      "nodeType": "IfStatement",
                      "src": "7280:113:0",
                      "trueBody": {
                        "id": 733,
                        "nodeType": "Block",
                        "src": "7300:79:0",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 725,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967281,
                                    "src": "7331:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 726,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "7331:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 727,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 691,
                                  "src": "7343:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 728,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 693,
                                  "src": "7347:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 729,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 689,
                                  "src": "7354:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 730,
                                  "name": "payload",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 705,
                                  "src": "7360:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 724,
                                "name": "addLiquidityItem",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 685,
                                "src": "7314:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (address,uint256,uint256,address,bytes memory) returns (uint256,uint256)"
                                }
                              },
                              "id": 731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7314:54:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "id": 732,
                            "nodeType": "ExpressionStatement",
                            "src": "7314:54:0"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "expression": {
                          "expression": {
                            "id": 738,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "7411:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MateriaLiquidityAdder_$777",
                              "typeString": "contract MateriaLiquidityAdder"
                            }
                          },
                          "id": 739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "onERC1155Received",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 743,
                          "src": "7411:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                            "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                          }
                        },
                        "id": 740,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "selector",
                        "nodeType": "MemberAccess",
                        "src": "7411:31:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "functionReturnParameters": 700,
                      "id": 741,
                      "nodeType": "Return",
                      "src": "7404:38:0"
                    }
                  ]
                },
                "functionSelector": "f23a6e61",
                "id": 743,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "onERC1155Received",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 697,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "7118:8:0"
                },
                "parameters": {
                  "id": 696,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 687,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 743,
                      "src": "7003:7:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 686,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7003:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 689,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 743,
                      "src": "7020:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 688,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7020:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 691,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 743,
                      "src": "7042:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 690,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7042:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 693,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 743,
                      "src": "7062:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 692,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7062:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 695,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 743,
                      "src": "7085:19:0",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 694,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7085:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6993:117:0"
                },
                "returnParameters": {
                  "id": 700,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 699,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 743,
                      "src": "7136:6:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 698,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "7136:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7135:8:0"
                },
                "scope": 777,
                "src": "6967:482:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  5970
                ],
                "body": {
                  "id": 764,
                  "nodeType": "Block",
                  "src": "7645:25:0",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 761,
                          "name": "revert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967277,
                            4294967277
                          ],
                          "referencedDeclaration": 4294967277,
                          "src": "7655:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                            "typeString": "function () pure"
                          }
                        },
                        "id": 762,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7655:8:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 763,
                      "nodeType": "ExpressionStatement",
                      "src": "7655:8:0"
                    }
                  ]
                },
                "functionSelector": "bc197c81",
                "id": 765,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "onERC1155BatchReceived",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 757,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "7619:8:0"
                },
                "parameters": {
                  "id": 756,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 745,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 765,
                      "src": "7496:7:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 744,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7496:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 747,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 765,
                      "src": "7513:7:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 746,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7513:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 750,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 765,
                      "src": "7530:18:0",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 748,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7530:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 749,
                        "nodeType": "ArrayTypeName",
                        "src": "7530:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 753,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 765,
                      "src": "7558:18:0",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 751,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7558:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 752,
                        "nodeType": "ArrayTypeName",
                        "src": "7558:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 755,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 765,
                      "src": "7586:14:0",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 754,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7586:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7486:120:0"
                },
                "returnParameters": {
                  "id": 760,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 759,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 765,
                      "src": "7637:6:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 758,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "7637:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7636:8:0"
                },
                "scope": 777,
                "src": "7455:215:0",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6026
                ],
                "body": {
                  "id": 775,
                  "nodeType": "Block",
                  "src": "7747:29:0",
                  "statements": [
                    {
                      "expression": {
                        "hexValue": "66616c7365",
                        "id": 773,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7764:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "functionReturnParameters": 772,
                      "id": 774,
                      "nodeType": "Return",
                      "src": "7757:12:0"
                    }
                  ]
                },
                "functionSelector": "01ffc9a7",
                "id": 776,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "supportsInterface",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 769,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "7723:8:0"
                },
                "parameters": {
                  "id": 768,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 767,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 776,
                      "src": "7703:6:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 766,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "7703:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7702:8:0"
                },
                "returnParameters": {
                  "id": 772,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 771,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 776,
                      "src": "7741:4:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 770,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "7741:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7740:6:0"
                },
                "scope": 777,
                "src": "7676:100:0",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 778,
            "src": "381:7397:0"
          }
        ],
        "src": "33:7746:0"
      }
    },
    "contracts/MateriaLiquidityRemover.sol": {
      "id": 1,
      "AST": {
        "absolutePath": "contracts/MateriaLiquidityRemover.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ],
          "IDoubleProxy": [
            5811
          ],
          "IERC1155": [
            5933
          ],
          "IERC1155Receiver": [
            5971
          ],
          "IERC1155Views": [
            6015
          ],
          "IERC165": [
            6027
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ],
          "IERC20WrapperV1": [
            6161
          ],
          "IEthItemInteroperableInterface": [
            6250
          ],
          "IEthItemMainInterface": [
            6365
          ],
          "IEthItemModelBase": [
            6392
          ],
          "IMateriaFactory": [
            7180
          ],
          "IMateriaOrchestrator": [
            7665
          ],
          "IMateriaPair": [
            7944
          ],
          "INativeV1": [
            8061
          ],
          "MateriaLibrary": [
            8693
          ],
          "MateriaLiquidityRemover": [
            1578
          ],
          "MateriaOperator": [
            1926
          ],
          "SafeMath": [
            9314
          ],
          "TransferHelper": [
            9474
          ]
        },
        "id": 1579,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 779,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:22:1"
          },
          {
            "absolutePath": "contracts/MateriaOperator.sol",
            "file": "./MateriaOperator.sol",
            "id": 780,
            "nodeType": "ImportDirective",
            "scope": 1579,
            "sourceUnit": 1927,
            "src": "57:31:1",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaOrchestrator.sol",
            "file": "./interfaces/IMateriaOrchestrator.sol",
            "id": 781,
            "nodeType": "ImportDirective",
            "scope": 1579,
            "sourceUnit": 7666,
            "src": "89:47:1",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaPair.sol",
            "file": "./interfaces/IMateriaPair.sol",
            "id": 782,
            "nodeType": "ImportDirective",
            "scope": 1579,
            "sourceUnit": 7945,
            "src": "137:39:1",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "./interfaces/IERC20.sol",
            "id": 783,
            "nodeType": "ImportDirective",
            "scope": 1579,
            "sourceUnit": 6106,
            "src": "177:33:1",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20WrapperV1.sol",
            "file": "./interfaces/IERC20WrapperV1.sol",
            "id": 784,
            "nodeType": "ImportDirective",
            "scope": 1579,
            "sourceUnit": 6162,
            "src": "211:42:1",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MateriaLibrary.sol",
            "file": "./libraries/MateriaLibrary.sol",
            "id": 785,
            "nodeType": "ImportDirective",
            "scope": 1579,
            "sourceUnit": 8694,
            "src": "255:40:1",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 786,
                  "name": "MateriaOperator",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1926,
                  "src": "333:15:1"
                },
                "id": 787,
                "nodeType": "InheritanceSpecifier",
                "src": "333:15:1"
              }
            ],
            "contractDependencies": [
              1926,
              5971,
              6027
            ],
            "contractKind": "contract",
            "fullyImplemented": true,
            "id": 1578,
            "linearizedBaseContracts": [
              1578,
              1926,
              6027,
              5971
            ],
            "name": "MateriaLiquidityRemover",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 945,
                  "nodeType": "Block",
                  "src": "623:1047:1",
                  "statements": [
                    {
                      "assignments": [
                        810
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 810,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 945,
                          "src": "633:20:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 809,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "633:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 822,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 816,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "693:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      ],
                                      "id": 815,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "685:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 814,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "685:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 817,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "685:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 813,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "664:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "664:35:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "664:48:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "664:50:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "656:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 811,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "656:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "656:59:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "633:82:1"
                    },
                    {
                      "assignments": [
                        824
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 824,
                          "mutability": "mutable",
                          "name": "bridgeToken",
                          "nodeType": "VariableDeclaration",
                          "scope": 945,
                          "src": "725:19:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 823,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "725:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 836,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 830,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "784:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      ],
                                      "id": 829,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "776:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 828,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "776:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 831,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "776:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 827,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "755:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 832,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "755:35:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bridgeToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7296,
                              "src": "755:47:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                "typeString": "function () view external returns (contract IERC20)"
                              }
                            },
                            "id": 834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "755:49:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          ],
                          "id": 826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "747:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 825,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "747:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 835,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "747:58:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "725:80:1"
                    },
                    {
                      "assignments": [
                        838
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 838,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "scope": 945,
                          "src": "815:12:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 837,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "815:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 839,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "815:12:1"
                    },
                    {
                      "id": 883,
                      "nodeType": "Block",
                      "src": "838:310:1",
                      "statements": [
                        {
                          "assignments": [
                            841,
                            843
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 841,
                              "mutability": "mutable",
                              "name": "ethItem",
                              "nodeType": "VariableDeclaration",
                              "scope": 883,
                              "src": "853:12:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "typeName": {
                                "id": 840,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "853:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "visibility": "internal"
                            },
                            {
                              "constant": false,
                              "id": 843,
                              "mutability": "mutable",
                              "name": "itemId",
                              "nodeType": "VariableDeclaration",
                              "scope": 883,
                              "src": "867:14:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 842,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "867:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 848,
                          "initialValue": {
                            "arguments": [
                              {
                                "id": 845,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 789,
                                "src": "896:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 846,
                                "name": "erc20Wrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 810,
                                "src": "903:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 844,
                              "name": "_isEthItem",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1652,
                              "src": "885:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$_t_uint256_$",
                                "typeString": "function (address,address) view returns (bool,uint256)"
                              }
                            },
                            "id": 847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "885:31:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                              "typeString": "tuple(bool,uint256)"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "852:64:1"
                        },
                        {
                          "expression": {
                            "id": 862,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 849,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 789,
                              "src": "930:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "condition": {
                                "id": 850,
                                "name": "ethItem",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 841,
                                "src": "938:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 858,
                                        "name": "itemId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 843,
                                        "src": "1010:6:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 855,
                                            "name": "erc20Wrapper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 810,
                                            "src": "980:12:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 854,
                                          "name": "IERC20WrapperV1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6161,
                                          "src": "964:15:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                            "typeString": "type(contract IERC20WrapperV1)"
                                          }
                                        },
                                        "id": 856,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "964:29:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                          "typeString": "contract IERC20WrapperV1"
                                        }
                                      },
                                      "id": 857,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "asInteroperable",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6310,
                                      "src": "964:45:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                        "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                      }
                                    },
                                    "id": 859,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "964:53:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  ],
                                  "id": 853,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "956:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 852,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "956:7:1",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 860,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "956:62:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 861,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "938:80:1",
                              "trueExpression": {
                                "id": 851,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 789,
                                "src": "948:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "930:88:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 863,
                          "nodeType": "ExpressionStatement",
                          "src": "930:88:1"
                        },
                        {
                          "expression": {
                            "id": 881,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 864,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 838,
                              "src": "1032:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "id": 872,
                                                  "name": "this",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4294967268,
                                                  "src": "1099:4:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                                    "typeString": "contract MateriaLiquidityRemover"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                                    "typeString": "contract MateriaLiquidityRemover"
                                                  }
                                                ],
                                                "id": 871,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "1091:7:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_address_$",
                                                  "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                  "id": 870,
                                                  "name": "address",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "1091:7:1",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 873,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "1091:13:1",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 869,
                                            "name": "IMateriaOrchestrator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7665,
                                            "src": "1070:20:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                              "typeString": "type(contract IMateriaOrchestrator)"
                                            }
                                          },
                                          "id": 874,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1070:35:1",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                            "typeString": "contract IMateriaOrchestrator"
                                          }
                                        },
                                        "id": 875,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "factory",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7290,
                                        "src": "1070:43:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                          "typeString": "function () view external returns (contract IMateriaFactory)"
                                        }
                                      },
                                      "id": 876,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1070:45:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                        "typeString": "contract IMateriaFactory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                        "typeString": "contract IMateriaFactory"
                                      }
                                    ],
                                    "id": 868,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1062:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 867,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1062:7:1",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1062:54:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 878,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 789,
                                  "src": "1118:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 879,
                                  "name": "bridgeToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 824,
                                  "src": "1125:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 865,
                                  "name": "MateriaLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8693,
                                  "src": "1039:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                    "typeString": "type(library MateriaLibrary)"
                                  }
                                },
                                "id": 866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pairFor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8317,
                                "src": "1039:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address,address,address) pure returns (address)"
                                }
                              },
                              "id": 880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1039:98:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1032:105:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 882,
                          "nodeType": "ExpressionStatement",
                          "src": "1032:105:1"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "expression": {
                              "id": 888,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "1190:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 889,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "1190:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 890,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 838,
                            "src": "1202:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 891,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 791,
                            "src": "1208:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 885,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 838,
                                "src": "1171:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 884,
                              "name": "IMateriaPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7944,
                              "src": "1158:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                                "typeString": "type(contract IMateriaPair)"
                              }
                            },
                            "id": 886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1158:18:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                              "typeString": "contract IMateriaPair"
                            }
                          },
                          "id": 887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7748,
                          "src": "1158:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1158:60:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 893,
                      "nodeType": "ExpressionStatement",
                      "src": "1158:60:1"
                    },
                    {
                      "assignments": [
                        895,
                        897
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 895,
                          "mutability": "mutable",
                          "name": "amount0",
                          "nodeType": "VariableDeclaration",
                          "scope": 945,
                          "src": "1255:15:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 894,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1255:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 897,
                          "mutability": "mutable",
                          "name": "amount1",
                          "nodeType": "VariableDeclaration",
                          "scope": 945,
                          "src": "1272:15:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 896,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1272:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 904,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 902,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 797,
                            "src": "1315:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 899,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 838,
                                "src": "1304:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 898,
                              "name": "IMateriaPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7944,
                              "src": "1291:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                                "typeString": "type(contract IMateriaPair)"
                              }
                            },
                            "id": 900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1291:18:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                              "typeString": "contract IMateriaPair"
                            }
                          },
                          "id": 901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "burn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7880,
                          "src": "1291:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address) external returns (uint256,uint256)"
                          }
                        },
                        "id": 903,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1291:27:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1254:64:1"
                    },
                    {
                      "assignments": [
                        906,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 906,
                          "mutability": "mutable",
                          "name": "token0",
                          "nodeType": "VariableDeclaration",
                          "scope": 945,
                          "src": "1329:14:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 905,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1329:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 912,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 909,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 789,
                            "src": "1375:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 910,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 824,
                            "src": "1382:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 907,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "1349:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sortTokens",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8269,
                          "src": "1349:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                            "typeString": "function (address,address) pure returns (address,address)"
                          }
                        },
                        "id": 911,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1349:45:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                          "typeString": "tuple(address,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1328:66:1"
                    },
                    {
                      "expression": {
                        "id": 929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 913,
                              "name": "amountBridge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 805,
                              "src": "1405:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 914,
                              "name": "amountToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 807,
                              "src": "1419:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 915,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "1404:27:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 916,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 906,
                              "src": "1434:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 919,
                                  "name": "bridgeToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 824,
                                  "src": "1452:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1444:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 917,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1444:7:1",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1444:20:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1434:30:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "components": [
                              {
                                "id": 925,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 897,
                                "src": "1489:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 926,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 895,
                                "src": "1498:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 927,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1488:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "id": 928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "1434:72:1",
                          "trueExpression": {
                            "components": [
                              {
                                "id": 922,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 895,
                                "src": "1468:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 923,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 897,
                                "src": "1477:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 924,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1467:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "1404:102:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 930,
                      "nodeType": "ExpressionStatement",
                      "src": "1404:102:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 934,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 932,
                              "name": "amountBridge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 805,
                              "src": "1524:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "id": 933,
                              "name": "bridgeAmountMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 795,
                              "src": "1540:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1524:31:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "494e53554646494349454e545f4252494447455f414d4f554e54",
                            "id": 935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1557:28:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c15065998d9c2b801999f56bf6aa393d54b2624a30c7495e2f8af2c4d0227e8",
                              "typeString": "literal_string \"INSUFFICIENT_BRIDGE_AMOUNT\""
                            },
                            "value": "INSUFFICIENT_BRIDGE_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_2c15065998d9c2b801999f56bf6aa393d54b2624a30c7495e2f8af2c4d0227e8",
                              "typeString": "literal_string \"INSUFFICIENT_BRIDGE_AMOUNT\""
                            }
                          ],
                          "id": 931,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "1516:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 936,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1516:70:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 937,
                      "nodeType": "ExpressionStatement",
                      "src": "1516:70:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 939,
                              "name": "amountToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 807,
                              "src": "1604:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "id": 940,
                              "name": "tokenAmountMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 793,
                              "src": "1619:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1604:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "494e53554646494349454e545f544f4b454e5f414d4f554e54",
                            "id": 942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1635:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_66669bb28e13c206b718d3e481bb150f681c467c8cdadfa4853a99b680130cce",
                              "typeString": "literal_string \"INSUFFICIENT_TOKEN_AMOUNT\""
                            },
                            "value": "INSUFFICIENT_TOKEN_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_66669bb28e13c206b718d3e481bb150f681c467c8cdadfa4853a99b680130cce",
                              "typeString": "literal_string \"INSUFFICIENT_TOKEN_AMOUNT\""
                            }
                          ],
                          "id": 938,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "1596:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1596:67:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 944,
                      "nodeType": "ExpressionStatement",
                      "src": "1596:67:1"
                    }
                  ]
                },
                "functionSelector": "96c92f5e",
                "id": 946,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 802,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 799,
                        "src": "561:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 803,
                    "modifierName": {
                      "id": 801,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "554:6:1"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "554:16:1"
                  }
                ],
                "name": "removeLiquidity",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 800,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 789,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 946,
                      "src": "389:13:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 788,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "389:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 791,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 946,
                      "src": "412:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 790,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "412:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 793,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 946,
                      "src": "439:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 792,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "439:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 795,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 946,
                      "src": "471:23:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 794,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "471:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 797,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 946,
                      "src": "504:10:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 796,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "504:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 799,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 946,
                      "src": "524:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 798,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "524:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "379:167:1"
                },
                "returnParameters": {
                  "id": 808,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 805,
                      "mutability": "mutable",
                      "name": "amountBridge",
                      "nodeType": "VariableDeclaration",
                      "scope": 946,
                      "src": "580:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 804,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "580:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 807,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 946,
                      "src": "602:19:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 806,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "602:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "579:43:1"
                },
                "scope": 1578,
                "src": "355:1315:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1115,
                  "nodeType": "Block",
                  "src": "1924:1109:1",
                  "statements": [
                    {
                      "assignments": [
                        967
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 967,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 1115,
                          "src": "1934:20:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 966,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1934:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 979,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 973,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "1994:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      ],
                                      "id": 972,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1986:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 971,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1986:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 974,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1986:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 970,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "1965:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 975,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1965:35:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "1965:48:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 977,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1965:50:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1957:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 968,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1957:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 978,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1957:59:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1934:82:1"
                    },
                    {
                      "assignments": [
                        981
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 981,
                          "mutability": "mutable",
                          "name": "bridgeToken",
                          "nodeType": "VariableDeclaration",
                          "scope": 1115,
                          "src": "2026:19:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 980,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2026:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 993,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 987,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "2085:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      ],
                                      "id": 986,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2077:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 985,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2077:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 988,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2077:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 984,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "2056:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2056:35:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 990,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bridgeToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7296,
                              "src": "2056:47:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                "typeString": "function () view external returns (contract IERC20)"
                              }
                            },
                            "id": 991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2056:49:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          ],
                          "id": 983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2048:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 982,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2048:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2048:58:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2026:80:1"
                    },
                    {
                      "assignments": [
                        995
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 995,
                          "mutability": "mutable",
                          "name": "ieth",
                          "nodeType": "VariableDeclaration",
                          "scope": 1115,
                          "src": "2116:12:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 994,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2116:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1003,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 999,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2161:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2153:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 997,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2153:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1000,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2153:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1001,
                            "name": "erc20Wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 967,
                            "src": "2165:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 996,
                          "name": "_tokenToInteroperable",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1895,
                          "src": "2131:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address) view returns (address)"
                          }
                        },
                        "id": 1002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2131:47:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2116:62:1"
                    },
                    {
                      "assignments": [
                        1005
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1005,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "scope": 1115,
                          "src": "2189:12:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1004,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2189:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1022,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 1013,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967268,
                                            "src": "2276:4:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                              "typeString": "contract MateriaLiquidityRemover"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                              "typeString": "contract MateriaLiquidityRemover"
                                            }
                                          ],
                                          "id": 1012,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "2268:7:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 1011,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2268:7:1",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 1014,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2268:13:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1010,
                                      "name": "IMateriaOrchestrator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7665,
                                      "src": "2247:20:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                        "typeString": "type(contract IMateriaOrchestrator)"
                                      }
                                    },
                                    "id": 1015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2247:35:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                      "typeString": "contract IMateriaOrchestrator"
                                    }
                                  },
                                  "id": 1016,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "factory",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7290,
                                  "src": "2247:43:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                    "typeString": "function () view external returns (contract IMateriaFactory)"
                                  }
                                },
                                "id": 1017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2247:45:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                  "typeString": "contract IMateriaFactory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                  "typeString": "contract IMateriaFactory"
                                }
                              ],
                              "id": 1009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2239:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1008,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2239:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1018,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2239:54:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1019,
                            "name": "ieth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 995,
                            "src": "2295:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1020,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 981,
                            "src": "2301:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1006,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "2216:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 1007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8317,
                          "src": "2216:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 1021,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2216:97:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2189:124:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "expression": {
                              "id": 1027,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "2356:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "2356:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1029,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1005,
                            "src": "2368:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1030,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 948,
                            "src": "2374:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 1024,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1005,
                                "src": "2337:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1023,
                              "name": "IMateriaPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7944,
                              "src": "2324:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                                "typeString": "type(contract IMateriaPair)"
                              }
                            },
                            "id": 1025,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2324:18:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                              "typeString": "contract IMateriaPair"
                            }
                          },
                          "id": 1026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7748,
                          "src": "2324:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 1031,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2324:60:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1032,
                      "nodeType": "ExpressionStatement",
                      "src": "2324:60:1"
                    },
                    {
                      "assignments": [
                        1034,
                        1036
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1034,
                          "mutability": "mutable",
                          "name": "amount0",
                          "nodeType": "VariableDeclaration",
                          "scope": 1115,
                          "src": "2421:15:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1033,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2421:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1036,
                          "mutability": "mutable",
                          "name": "amount1",
                          "nodeType": "VariableDeclaration",
                          "scope": 1115,
                          "src": "2438:15:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1035,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2438:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1046,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 1043,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "2489:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                  "typeString": "contract MateriaLiquidityRemover"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                  "typeString": "contract MateriaLiquidityRemover"
                                }
                              ],
                              "id": 1042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2481:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1041,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2481:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2481:13:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 1038,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1005,
                                "src": "2470:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1037,
                              "name": "IMateriaPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7944,
                              "src": "2457:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                                "typeString": "type(contract IMateriaPair)"
                              }
                            },
                            "id": 1039,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2457:18:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                              "typeString": "contract IMateriaPair"
                            }
                          },
                          "id": 1040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "burn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7880,
                          "src": "2457:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address) external returns (uint256,uint256)"
                          }
                        },
                        "id": 1045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2457:38:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2420:75:1"
                    },
                    {
                      "assignments": [
                        1048,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1048,
                          "mutability": "mutable",
                          "name": "token0",
                          "nodeType": "VariableDeclaration",
                          "scope": 1115,
                          "src": "2506:14:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1047,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2506:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 1057,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 1051,
                            "name": "ieth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 995,
                            "src": "2552:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 1054,
                                "name": "bridgeToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 981,
                                "src": "2566:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2558:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1052,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2558:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2558:20:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1049,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "2526:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 1050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sortTokens",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8269,
                          "src": "2526:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                            "typeString": "function (address,address) pure returns (address,address)"
                          }
                        },
                        "id": 1056,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2526:53:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                          "typeString": "tuple(address,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2505:74:1"
                    },
                    {
                      "expression": {
                        "id": 1074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 1058,
                              "name": "amountBridge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 962,
                              "src": "2590:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1059,
                              "name": "amountEth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 964,
                              "src": "2604:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1060,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "2589:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1061,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1048,
                              "src": "2617:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 1064,
                                  "name": "bridgeToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 981,
                                  "src": "2635:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2627:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1062,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2627:7:1",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2627:20:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "2617:30:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "components": [
                              {
                                "id": 1070,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1036,
                                "src": "2672:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 1071,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1034,
                                "src": "2681:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1072,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2671:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "id": 1073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "2617:72:1",
                          "trueExpression": {
                            "components": [
                              {
                                "id": 1067,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1034,
                                "src": "2651:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 1068,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1036,
                                "src": "2660:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1069,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2650:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "2589:100:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1075,
                      "nodeType": "ExpressionStatement",
                      "src": "2589:100:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1077,
                              "name": "amountBridge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 962,
                              "src": "2707:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "id": 1078,
                              "name": "bridgeAmountMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 950,
                              "src": "2723:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2707:31:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "494e53554646494349454e545f4252494447455f414d4f554e54",
                            "id": 1080,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2740:28:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c15065998d9c2b801999f56bf6aa393d54b2624a30c7495e2f8af2c4d0227e8",
                              "typeString": "literal_string \"INSUFFICIENT_BRIDGE_AMOUNT\""
                            },
                            "value": "INSUFFICIENT_BRIDGE_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_2c15065998d9c2b801999f56bf6aa393d54b2624a30c7495e2f8af2c4d0227e8",
                              "typeString": "literal_string \"INSUFFICIENT_BRIDGE_AMOUNT\""
                            }
                          ],
                          "id": 1076,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "2699:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2699:70:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1082,
                      "nodeType": "ExpressionStatement",
                      "src": "2699:70:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1086,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1084,
                              "name": "amountEth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 964,
                              "src": "2787:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "id": 1085,
                              "name": "ethAmountMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 952,
                              "src": "2800:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2787:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "494e53554646494349454e545f544f4b454e5f414d4f554e54",
                            "id": 1087,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2814:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_66669bb28e13c206b718d3e481bb150f681c467c8cdadfa4853a99b680130cce",
                              "typeString": "literal_string \"INSUFFICIENT_TOKEN_AMOUNT\""
                            },
                            "value": "INSUFFICIENT_TOKEN_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_66669bb28e13c206b718d3e481bb150f681c467c8cdadfa4853a99b680130cce",
                              "typeString": "literal_string \"INSUFFICIENT_TOKEN_AMOUNT\""
                            }
                          ],
                          "id": 1083,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "2779:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2779:63:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1089,
                      "nodeType": "ExpressionStatement",
                      "src": "2779:63:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1093,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 981,
                            "src": "2880:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1094,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 954,
                            "src": "2893:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1095,
                            "name": "amountBridge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 962,
                            "src": "2897:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 1090,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "2852:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 1092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "2852:27:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 1096,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2852:58:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1097,
                      "nodeType": "ExpressionStatement",
                      "src": "2852:58:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 1104,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967268,
                                            "src": "2968:4:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                              "typeString": "contract MateriaLiquidityRemover"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                              "typeString": "contract MateriaLiquidityRemover"
                                            }
                                          ],
                                          "id": 1103,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "2960:7:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 1102,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2960:7:1",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 1105,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2960:13:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1101,
                                      "name": "IMateriaOrchestrator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7665,
                                      "src": "2939:20:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                        "typeString": "type(contract IMateriaOrchestrator)"
                                      }
                                    },
                                    "id": 1106,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2939:35:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                      "typeString": "contract IMateriaOrchestrator"
                                    }
                                  },
                                  "id": 1107,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ETHEREUM_OBJECT_ID",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7307,
                                  "src": "2939:54:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view external returns (uint256)"
                                  }
                                },
                                "id": 1108,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2939:56:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1100,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2931:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 1099,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2931:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1109,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2931:65:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1110,
                            "name": "amountEth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 964,
                            "src": "2998:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1111,
                            "name": "erc20Wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 967,
                            "src": "3009:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1112,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 954,
                            "src": "3023:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1098,
                          "name": "_unwrapEth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1789,
                          "src": "2920:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (uint256,uint256,address,address)"
                          }
                        },
                        "id": 1113,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2920:106:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1114,
                      "nodeType": "ExpressionStatement",
                      "src": "2920:106:1"
                    }
                  ]
                },
                "functionSelector": "ee1fae3c",
                "id": 1116,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 959,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 956,
                        "src": "1864:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 960,
                    "modifierName": {
                      "id": 958,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "1857:6:1"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "1857:16:1"
                  }
                ],
                "name": "removeLiquidityETH",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 957,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 948,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 1116,
                      "src": "1717:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 947,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1717:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 950,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 1116,
                      "src": "1744:23:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 949,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1744:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 952,
                      "mutability": "mutable",
                      "name": "ethAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 1116,
                      "src": "1777:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 951,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1777:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 954,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 1116,
                      "src": "1807:10:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 953,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1807:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 956,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 1116,
                      "src": "1827:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 955,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1827:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1707:142:1"
                },
                "returnParameters": {
                  "id": 965,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 962,
                      "mutability": "mutable",
                      "name": "amountBridge",
                      "nodeType": "VariableDeclaration",
                      "scope": 1116,
                      "src": "1883:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 961,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1883:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 964,
                      "mutability": "mutable",
                      "name": "amountEth",
                      "nodeType": "VariableDeclaration",
                      "scope": 1116,
                      "src": "1905:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 963,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1905:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1882:41:1"
                },
                "scope": 1578,
                "src": "1680:1353:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1213,
                  "nodeType": "Block",
                  "src": "3328:502:1",
                  "statements": [
                    {
                      "assignments": [
                        1140
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1140,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 1213,
                          "src": "3338:15:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1139,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3338:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1152,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1146,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "3393:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      ],
                                      "id": 1145,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3385:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1144,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3385:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1147,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3385:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1143,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "3364:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 1148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3364:35:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 1149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "3364:43:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 1150,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3364:45:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 1142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3356:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1141,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3356:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3356:54:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3338:72:1"
                    },
                    {
                      "assignments": [
                        1154
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1154,
                          "mutability": "mutable",
                          "name": "bridgeToken",
                          "nodeType": "VariableDeclaration",
                          "scope": 1213,
                          "src": "3420:19:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1153,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3420:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1166,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1160,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "3479:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      ],
                                      "id": 1159,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3471:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1158,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3471:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3471:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1157,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "3450:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 1162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3450:35:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 1163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bridgeToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7296,
                              "src": "3450:47:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                "typeString": "function () view external returns (contract IERC20)"
                              }
                            },
                            "id": 1164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3450:49:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          ],
                          "id": 1156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3442:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1155,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3442:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3442:58:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3420:80:1"
                    },
                    {
                      "assignments": [
                        1168
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1168,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "scope": 1213,
                          "src": "3511:12:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1167,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3511:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1175,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 1171,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1140,
                            "src": "3549:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1172,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1154,
                            "src": "3558:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1173,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1118,
                            "src": "3571:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1169,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "3526:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 1170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8317,
                          "src": "3526:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 1174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3526:51:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3511:66:1"
                    },
                    {
                      "assignments": [
                        1177
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1177,
                          "mutability": "mutable",
                          "name": "value",
                          "nodeType": "VariableDeclaration",
                          "scope": 1213,
                          "src": "3587:13:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1176,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3587:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1186,
                      "initialValue": {
                        "condition": {
                          "id": 1178,
                          "name": "approveMax",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "3603:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "id": 1184,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1120,
                          "src": "3636:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1185,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "3603:42:1",
                        "trueExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 1181,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3621:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 1180,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3621:7:1",
                                  "typeDescriptions": {}
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "id": 1179,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967269,
                              "src": "3616:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 1182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3616:13:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_uint256",
                              "typeString": "type(uint256)"
                            }
                          },
                          "id": 1183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "max",
                          "nodeType": "MemberAccess",
                          "src": "3616:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3587:58:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "expression": {
                              "id": 1191,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "3681:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "3681:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 1195,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "3701:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                  "typeString": "contract MateriaLiquidityRemover"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                  "typeString": "contract MateriaLiquidityRemover"
                                }
                              ],
                              "id": 1194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3693:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1193,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3693:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3693:13:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1197,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1177,
                            "src": "3708:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1198,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1128,
                            "src": "3715:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1199,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1132,
                            "src": "3725:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "id": 1200,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1134,
                            "src": "3728:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 1201,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1136,
                            "src": "3731:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 1188,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1168,
                                "src": "3668:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1187,
                              "name": "IMateriaPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7944,
                              "src": "3655:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                                "typeString": "type(contract IMateriaPair)"
                              }
                            },
                            "id": 1189,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3655:18:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                              "typeString": "contract IMateriaPair"
                            }
                          },
                          "id": 1190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7782,
                          "src": "3655:25:1",
                          "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": 1202,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3655:78:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1203,
                      "nodeType": "ExpressionStatement",
                      "src": "3655:78:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1205,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1118,
                            "src": "3759:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1206,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1120,
                            "src": "3766:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1207,
                            "name": "tokenAmountMin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1122,
                            "src": "3777:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1208,
                            "name": "bridgeAmountMin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1124,
                            "src": "3793:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1209,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1126,
                            "src": "3810:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1210,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1128,
                            "src": "3814:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1204,
                          "name": "removeLiquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 946,
                          "src": "3743:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                          }
                        },
                        "id": 1211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3743:80:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "id": 1212,
                      "nodeType": "ExpressionStatement",
                      "src": "3743:80:1"
                    }
                  ]
                },
                "functionSelector": "104870fd",
                "id": 1214,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityWithPermit",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1137,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1118,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 1214,
                      "src": "3083:13:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1117,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3083:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1120,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 1214,
                      "src": "3106:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1119,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3106:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1122,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 1214,
                      "src": "3133:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1121,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3133:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1124,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 1214,
                      "src": "3165:23:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1123,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3165:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1126,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 1214,
                      "src": "3198:10:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1125,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3198:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1128,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 1214,
                      "src": "3218:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1127,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3218:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1130,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 1214,
                      "src": "3244:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1129,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3244:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1132,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 1214,
                      "src": "3269:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1131,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3269:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1134,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 1214,
                      "src": "3286:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1133,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3286:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1136,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 1214,
                      "src": "3305:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1135,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3305:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3073:247:1"
                },
                "returnParameters": {
                  "id": 1138,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3328:0:1"
                },
                "scope": 1578,
                "src": "3039:791:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1328,
                  "nodeType": "Block",
                  "src": "4105:632:1",
                  "statements": [
                    {
                      "assignments": [
                        1236
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1236,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 1328,
                          "src": "4115:15:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1235,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4115:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1248,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1242,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "4170:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      ],
                                      "id": 1241,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4162:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1240,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4162:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1243,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4162:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1239,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "4141:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 1244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4141:35:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 1245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "4141:43:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 1246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4141:45:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 1238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4133:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1237,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4133:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4133:54:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4115:72:1"
                    },
                    {
                      "assignments": [
                        1250
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1250,
                          "mutability": "mutable",
                          "name": "bridgeToken",
                          "nodeType": "VariableDeclaration",
                          "scope": 1328,
                          "src": "4197:19:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1249,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4197:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1262,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1256,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "4256:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      ],
                                      "id": 1255,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4248:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1254,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4248:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1257,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4248:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1253,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "4227:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 1258,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4227:35:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 1259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bridgeToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7296,
                              "src": "4227:47:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                "typeString": "function () view external returns (contract IERC20)"
                              }
                            },
                            "id": 1260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4227:49:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          ],
                          "id": 1252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4219:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1251,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4219:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4219:58:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4197:80:1"
                    },
                    {
                      "assignments": [
                        1264
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1264,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 1328,
                          "src": "4287:20:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1263,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4287:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1276,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1270,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "4347:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      ],
                                      "id": 1269,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4339:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1268,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4339:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1271,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4339:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1267,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "4318:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 1272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4318:35:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 1273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "4318:48:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 1274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4318:50:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 1266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4310:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1265,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4310:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4310:59:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4287:82:1"
                    },
                    {
                      "assignments": [
                        1278
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1278,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "scope": 1328,
                          "src": "4380:12:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1277,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4380:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1291,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 1281,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1236,
                            "src": "4418:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1282,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1250,
                            "src": "4427:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1286,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4470:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1285,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4462:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1284,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4462:7:1",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4462:10:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 1288,
                                "name": "erc20Wrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1264,
                                "src": "4474:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1283,
                              "name": "_tokenToInteroperable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1895,
                              "src": "4440:21:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address) view returns (address)"
                              }
                            },
                            "id": 1289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4440:47:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1279,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "4395:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 1280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8317,
                          "src": "4395:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 1290,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4395:93:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4380:108:1"
                    },
                    {
                      "assignments": [
                        1293
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1293,
                          "mutability": "mutable",
                          "name": "value",
                          "nodeType": "VariableDeclaration",
                          "scope": 1328,
                          "src": "4498:13:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1292,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4498:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1302,
                      "initialValue": {
                        "condition": {
                          "id": 1294,
                          "name": "approveMax",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1226,
                          "src": "4514:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "id": 1300,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1216,
                          "src": "4547:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "4514:42:1",
                        "trueExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 1297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4532:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 1296,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4532:7:1",
                                  "typeDescriptions": {}
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "id": 1295,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967269,
                              "src": "4527:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 1298,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4527:13:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_uint256",
                              "typeString": "type(uint256)"
                            }
                          },
                          "id": 1299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "max",
                          "nodeType": "MemberAccess",
                          "src": "4527:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4498:58:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "expression": {
                              "id": 1307,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "4592:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1308,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "4592:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 1311,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "4612:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                  "typeString": "contract MateriaLiquidityRemover"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                  "typeString": "contract MateriaLiquidityRemover"
                                }
                              ],
                              "id": 1310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4604:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1309,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4604:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4604:13:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1313,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1293,
                            "src": "4619:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1314,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1224,
                            "src": "4626:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1315,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1228,
                            "src": "4636:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "id": 1316,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1230,
                            "src": "4639:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 1317,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1232,
                            "src": "4642:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 1304,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1278,
                                "src": "4579:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1303,
                              "name": "IMateriaPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7944,
                              "src": "4566:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                                "typeString": "type(contract IMateriaPair)"
                              }
                            },
                            "id": 1305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4566:18:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                              "typeString": "contract IMateriaPair"
                            }
                          },
                          "id": 1306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7782,
                          "src": "4566:25:1",
                          "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": 1318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4566:78:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1319,
                      "nodeType": "ExpressionStatement",
                      "src": "4566:78:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1321,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1216,
                            "src": "4673:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1322,
                            "name": "bridgeAmountMin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1220,
                            "src": "4684:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1323,
                            "name": "tokenAmountMin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1218,
                            "src": "4701:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1324,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1222,
                            "src": "4717:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1325,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1224,
                            "src": "4721:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1320,
                          "name": "removeLiquidityETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1116,
                          "src": "4654:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                          }
                        },
                        "id": 1326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4654:76:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "id": 1327,
                      "nodeType": "ExpressionStatement",
                      "src": "4654:76:1"
                    }
                  ]
                },
                "functionSelector": "678700e0",
                "id": 1329,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHWithPermit",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1233,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1216,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 1329,
                      "src": "3883:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1215,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3883:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1218,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 1329,
                      "src": "3910:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1217,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3910:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1220,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 1329,
                      "src": "3942:23:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1219,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3942:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1222,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 1329,
                      "src": "3975:10:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1221,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3975:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1224,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 1329,
                      "src": "3995:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1223,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3995:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1226,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 1329,
                      "src": "4021:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1225,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4021:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1228,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 1329,
                      "src": "4046:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1227,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "4046:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1230,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 1329,
                      "src": "4063:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1229,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4063:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1232,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 1329,
                      "src": "4082:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1231,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4082:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3873:224:1"
                },
                "returnParameters": {
                  "id": 1234,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4105:0:1"
                },
                "scope": 1578,
                "src": "3836:901:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1358,
                  "nodeType": "Block",
                  "src": "4953:229:1",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1345,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1331,
                            "src": "4994:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1346,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1333,
                            "src": "5013:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1347,
                            "name": "tokenAmountMin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1335,
                            "src": "5036:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1348,
                            "name": "bridgeAmountMin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1337,
                            "src": "5064:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1349,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1339,
                            "src": "5093:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1350,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1341,
                            "src": "5109:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1344,
                          "name": "removeLiquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 946,
                          "src": "4965:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                          }
                        },
                        "id": 1351,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4965:162:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "id": 1352,
                      "nodeType": "ExpressionStatement",
                      "src": "4965:162:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1354,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1331,
                            "src": "5165:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1355,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1339,
                            "src": "5172:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1353,
                          "name": "_unwrapAndTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1524,
                          "src": "5146:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 1356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5146:29:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1357,
                      "nodeType": "ExpressionStatement",
                      "src": "5146:29:1"
                    }
                  ]
                },
                "functionSelector": "3d0c2a34",
                "id": 1359,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityAndUnwrap",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1342,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1331,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 1359,
                      "src": "4786:13:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1330,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4786:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1333,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 1359,
                      "src": "4809:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1332,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4809:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1335,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 1359,
                      "src": "4836:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1334,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4836:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1337,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 1359,
                      "src": "4868:23:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1336,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4868:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1339,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 1359,
                      "src": "4901:10:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1338,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4901:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1341,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 1359,
                      "src": "4921:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1340,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4921:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4776:167:1"
                },
                "returnParameters": {
                  "id": 1343,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4953:0:1"
                },
                "scope": 1578,
                "src": "4743:439:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 1403,
                  "nodeType": "Block",
                  "src": "5488:319:1",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1383,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1361,
                            "src": "5539:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1384,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1363,
                            "src": "5558:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1385,
                            "name": "tokenAmountMin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1365,
                            "src": "5581:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1386,
                            "name": "bridgeAmountMin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1367,
                            "src": "5609:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 1389,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "5646:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                  "typeString": "contract MateriaLiquidityRemover"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                  "typeString": "contract MateriaLiquidityRemover"
                                }
                              ],
                              "id": 1388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5638:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1387,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5638:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5638:13:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1391,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1371,
                            "src": "5665:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1392,
                            "name": "approveMax",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1373,
                            "src": "5687:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 1393,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1375,
                            "src": "5711:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "id": 1394,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1377,
                            "src": "5726:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 1395,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1379,
                            "src": "5741:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1382,
                          "name": "removeLiquidityWithPermit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1214,
                          "src": "5500:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                            "typeString": "function (address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)"
                          }
                        },
                        "id": 1396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5500:252:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1397,
                      "nodeType": "ExpressionStatement",
                      "src": "5500:252:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1399,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1361,
                            "src": "5790:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1400,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1369,
                            "src": "5797:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1398,
                          "name": "_unwrapAndTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1524,
                          "src": "5771:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 1401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5771:29:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1402,
                      "nodeType": "ExpressionStatement",
                      "src": "5771:29:1"
                    }
                  ]
                },
                "functionSelector": "5909889d",
                "id": 1404,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityWithPermitAndUnwrap",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1380,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1361,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 1404,
                      "src": "5241:13:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1360,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5241:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1363,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 1404,
                      "src": "5264:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1362,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5264:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1365,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 1404,
                      "src": "5291:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1364,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5291:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1367,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 1404,
                      "src": "5323:23:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1366,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5323:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1369,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 1404,
                      "src": "5356:10:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1368,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5356:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1371,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 1404,
                      "src": "5376:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1370,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5376:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1373,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 1404,
                      "src": "5402:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1372,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5402:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1375,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 1404,
                      "src": "5427:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1374,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "5427:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1377,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 1404,
                      "src": "5444:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1376,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5444:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1379,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 1404,
                      "src": "5463:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1378,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5463:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5231:247:1"
                },
                "returnParameters": {
                  "id": 1381,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "5488:0:1"
                },
                "scope": 1578,
                "src": "5188:619:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 1523,
                  "nodeType": "Block",
                  "src": "5881:838:1",
                  "statements": [
                    {
                      "assignments": [
                        1412
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1412,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 1523,
                          "src": "5891:20:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1411,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5891:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1424,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1418,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "5951:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      ],
                                      "id": 1417,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5943:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1416,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5943:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1419,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5943:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1415,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "5922:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 1420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5922:35:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 1421,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "5922:48:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 1422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5922:50:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 1414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5914:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1413,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5914:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5914:59:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5891:82:1"
                    },
                    {
                      "assignments": [
                        1426
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1426,
                          "mutability": "mutable",
                          "name": "bridgeToken",
                          "nodeType": "VariableDeclaration",
                          "scope": 1523,
                          "src": "5983:19:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1425,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5983:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1438,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1432,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "6042:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      ],
                                      "id": 1431,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6034:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1430,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6034:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1433,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6034:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1429,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "6013:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 1434,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6013:35:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 1435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bridgeToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7296,
                              "src": "6013:47:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                "typeString": "function () view external returns (contract IERC20)"
                              }
                            },
                            "id": 1436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6013:49:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          ],
                          "id": 1428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6005:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1427,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6005:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1437,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6005:58:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5983:80:1"
                    },
                    {
                      "assignments": [
                        1440
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1440,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 1523,
                          "src": "6073:15:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1439,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6073:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1452,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1446,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "6128:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                          "typeString": "contract MateriaLiquidityRemover"
                                        }
                                      ],
                                      "id": 1445,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6120:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1444,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6120:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1447,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6120:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1443,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "6099:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 1448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6099:35:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 1449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "6099:43:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 1450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6099:45:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 1442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6091:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1441,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6091:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1451,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6091:54:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6073:72:1"
                    },
                    {
                      "assignments": [
                        1454,
                        1456
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1454,
                          "mutability": "mutable",
                          "name": "ethItem",
                          "nodeType": "VariableDeclaration",
                          "scope": 1523,
                          "src": "6156:12:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1453,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "6156:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1456,
                          "mutability": "mutable",
                          "name": "itemId",
                          "nodeType": "VariableDeclaration",
                          "scope": 1523,
                          "src": "6170:14:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1455,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6170:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1461,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 1458,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1406,
                            "src": "6199:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1459,
                            "name": "erc20Wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1412,
                            "src": "6206:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1457,
                          "name": "_isEthItem",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1652,
                          "src": "6188:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$_t_uint256_$",
                            "typeString": "function (address,address) view returns (bool,uint256)"
                          }
                        },
                        "id": 1460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6188:31:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                          "typeString": "tuple(bool,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6155:64:1"
                    },
                    {
                      "expression": {
                        "id": 1472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 1462,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1406,
                          "src": "6229:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "condition": {
                            "id": 1463,
                            "name": "ethItem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1454,
                            "src": "6237:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "id": 1470,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1406,
                            "src": "6294:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "6237:62:1",
                          "trueExpression": {
                            "arguments": [
                              {
                                "id": 1468,
                                "name": "itemId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1456,
                                "src": "6284:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1465,
                                    "name": "erc20Wrapper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1412,
                                    "src": "6263:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1464,
                                  "name": "IERC20WrapperV1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6161,
                                  "src": "6247:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                    "typeString": "type(contract IERC20WrapperV1)"
                                  }
                                },
                                "id": 1466,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6247:29:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                  "typeString": "contract IERC20WrapperV1"
                                }
                              },
                              "id": 1467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "source",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6133,
                              "src": "6247:36:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                                "typeString": "function (uint256) view external returns (address)"
                              }
                            },
                            "id": 1469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6247:44:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6229:70:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1473,
                      "nodeType": "ExpressionStatement",
                      "src": "6229:70:1"
                    },
                    {
                      "assignments": [
                        1475
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1475,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "scope": 1523,
                          "src": "6309:12:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1474,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6309:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 1490,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 1478,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1440,
                            "src": "6347:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1479,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1426,
                            "src": "6356:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 1486,
                                    "name": "itemId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1456,
                                    "src": "6423:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1483,
                                        "name": "erc20Wrapper",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1412,
                                        "src": "6393:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1482,
                                      "name": "IERC20WrapperV1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6161,
                                      "src": "6377:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                        "typeString": "type(contract IERC20WrapperV1)"
                                      }
                                    },
                                    "id": 1484,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6377:29:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                      "typeString": "contract IERC20WrapperV1"
                                    }
                                  },
                                  "id": 1485,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "asInteroperable",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6310,
                                  "src": "6377:45:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                    "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                  }
                                },
                                "id": 1487,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6377:53:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                  "typeString": "contract IEthItemInteroperableInterface"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                  "typeString": "contract IEthItemInteroperableInterface"
                                }
                              ],
                              "id": 1481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6369:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1480,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6369:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6369:62:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1476,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "6324:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 1477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8317,
                          "src": "6324:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 1489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6324:108:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6309:123:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1492,
                            "name": "itemId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1456,
                            "src": "6469:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1493,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1406,
                            "src": "6489:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 1500,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967268,
                                    "src": "6545:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                      "typeString": "contract MateriaLiquidityRemover"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                      "typeString": "contract MateriaLiquidityRemover"
                                    }
                                  ],
                                  "id": 1499,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6537:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1498,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6537:7:1",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6537:13:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1495,
                                    "name": "pair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1475,
                                    "src": "6521:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1494,
                                  "name": "IMateriaPair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7944,
                                  "src": "6508:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                                    "typeString": "type(contract IMateriaPair)"
                                  }
                                },
                                "id": 1496,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6508:18:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                                  "typeString": "contract IMateriaPair"
                                }
                              },
                              "id": 1497,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7710,
                              "src": "6508:28:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 1502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6508:43:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1503,
                            "name": "erc20Wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1412,
                            "src": "6565:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1504,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1408,
                            "src": "6591:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1491,
                          "name": "_unwrapErc20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1762,
                          "src": "6443:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (uint256,address,uint256,address,address)"
                          }
                        },
                        "id": 1505,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6443:160:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1506,
                      "nodeType": "ExpressionStatement",
                      "src": "6443:160:1"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1510,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1426,
                            "src": "6650:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1511,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1408,
                            "src": "6663:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 1518,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967268,
                                    "src": "6705:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                      "typeString": "contract MateriaLiquidityRemover"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MateriaLiquidityRemover_$1578",
                                      "typeString": "contract MateriaLiquidityRemover"
                                    }
                                  ],
                                  "id": 1517,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6697:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1516,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6697:7:1",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6697:13:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1513,
                                    "name": "bridgeToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1426,
                                    "src": "6674:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1512,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6105,
                                  "src": "6667:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$6105_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 1514,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6667:19:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$6105",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 1515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6044,
                              "src": "6667:29:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 1520,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6667:44:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 1507,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "6622:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 1509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "6622:27:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 1521,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6622:90:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1522,
                      "nodeType": "ExpressionStatement",
                      "src": "6622:90:1"
                    }
                  ]
                },
                "id": 1524,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_unwrapAndTransfer",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1409,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1406,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 1524,
                      "src": "5846:13:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1405,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5846:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1408,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 1524,
                      "src": "5861:10:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1407,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5861:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5845:27:1"
                },
                "returnParameters": {
                  "id": 1410,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "5881:0:1"
                },
                "scope": 1578,
                "src": "5818:901:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "baseFunctions": [
                  5952
                ],
                "body": {
                  "id": 1543,
                  "nodeType": "Block",
                  "src": "6888:25:1",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1540,
                          "name": "revert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967277,
                            4294967277
                          ],
                          "referencedDeclaration": 4294967277,
                          "src": "6898:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                            "typeString": "function () pure"
                          }
                        },
                        "id": 1541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6898:8:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1542,
                      "nodeType": "ExpressionStatement",
                      "src": "6898:8:1"
                    }
                  ]
                },
                "functionSelector": "f23a6e61",
                "id": 1544,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "onERC1155Received",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 1536,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "6862:8:1"
                },
                "parameters": {
                  "id": 1535,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1526,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1544,
                      "src": "6761:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1525,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6761:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1528,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1544,
                      "src": "6778:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1527,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6778:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1530,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1544,
                      "src": "6795:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1529,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6795:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1532,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1544,
                      "src": "6812:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1531,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6812:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1534,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1544,
                      "src": "6829:14:1",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1533,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6829:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6751:98:1"
                },
                "returnParameters": {
                  "id": 1539,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1538,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1544,
                      "src": "6880:6:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 1537,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "6880:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6879:8:1"
                },
                "scope": 1578,
                "src": "6725:188:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  5970
                ],
                "body": {
                  "id": 1565,
                  "nodeType": "Block",
                  "src": "7109:25:1",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1562,
                          "name": "revert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967277,
                            4294967277
                          ],
                          "referencedDeclaration": 4294967277,
                          "src": "7119:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                            "typeString": "function () pure"
                          }
                        },
                        "id": 1563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7119:8:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1564,
                      "nodeType": "ExpressionStatement",
                      "src": "7119:8:1"
                    }
                  ]
                },
                "functionSelector": "bc197c81",
                "id": 1566,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "onERC1155BatchReceived",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 1558,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "7083:8:1"
                },
                "parameters": {
                  "id": 1557,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1546,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1566,
                      "src": "6960:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1545,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6960:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1548,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1566,
                      "src": "6977:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1547,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6977:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1551,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1566,
                      "src": "6994:18:1",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1549,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6994:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1550,
                        "nodeType": "ArrayTypeName",
                        "src": "6994:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1554,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1566,
                      "src": "7022:18:1",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1552,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7022:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1553,
                        "nodeType": "ArrayTypeName",
                        "src": "7022:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1556,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1566,
                      "src": "7050:14:1",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1555,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7050:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6950:120:1"
                },
                "returnParameters": {
                  "id": 1561,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1560,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1566,
                      "src": "7101:6:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 1559,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "7101:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7100:8:1"
                },
                "scope": 1578,
                "src": "6919:215:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6026
                ],
                "body": {
                  "id": 1576,
                  "nodeType": "Block",
                  "src": "7211:29:1",
                  "statements": [
                    {
                      "expression": {
                        "hexValue": "66616c7365",
                        "id": 1574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7228:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "functionReturnParameters": 1573,
                      "id": 1575,
                      "nodeType": "Return",
                      "src": "7221:12:1"
                    }
                  ]
                },
                "functionSelector": "01ffc9a7",
                "id": 1577,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "supportsInterface",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 1570,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "7187:8:1"
                },
                "parameters": {
                  "id": 1569,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1568,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1577,
                      "src": "7167:6:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 1567,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "7167:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7166:8:1"
                },
                "returnParameters": {
                  "id": 1573,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1572,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1577,
                      "src": "7205:4:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1571,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "7205:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7204:6:1"
                },
                "scope": 1578,
                "src": "7140:100:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 1579,
            "src": "297:6945:1"
          }
        ],
        "src": "33:7210:1"
      }
    },
    "contracts/MateriaOperator.sol": {
      "id": 2,
      "AST": {
        "absolutePath": "contracts/MateriaOperator.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ],
          "IDoubleProxy": [
            5811
          ],
          "IERC1155": [
            5933
          ],
          "IERC1155Receiver": [
            5971
          ],
          "IERC1155Views": [
            6015
          ],
          "IERC165": [
            6027
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ],
          "IERC20WrapperV1": [
            6161
          ],
          "IEthItemInteroperableInterface": [
            6250
          ],
          "IEthItemMainInterface": [
            6365
          ],
          "IEthItemModelBase": [
            6392
          ],
          "IMateriaFactory": [
            7180
          ],
          "IMateriaOrchestrator": [
            7665
          ],
          "INativeV1": [
            8061
          ],
          "MateriaOperator": [
            1926
          ],
          "TransferHelper": [
            9474
          ]
        },
        "id": 1927,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1580,
            "literals": [
              "solidity",
              "^",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:23:2"
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "./interfaces/IERC20.sol",
            "id": 1581,
            "nodeType": "ImportDirective",
            "scope": 1927,
            "sourceUnit": 6106,
            "src": "58:33:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaOrchestrator.sol",
            "file": "./interfaces/IMateriaOrchestrator.sol",
            "id": 1582,
            "nodeType": "ImportDirective",
            "scope": 1927,
            "sourceUnit": 7666,
            "src": "92:47:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/TransferHelper.sol",
            "file": "./libraries/TransferHelper.sol",
            "id": 1583,
            "nodeType": "ImportDirective",
            "scope": 1927,
            "sourceUnit": 9475,
            "src": "140:40:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IEthItemInteroperableInterface.sol",
            "file": "./interfaces/IEthItemInteroperableInterface.sol",
            "id": 1584,
            "nodeType": "ImportDirective",
            "scope": 1927,
            "sourceUnit": 6251,
            "src": "181:57:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20WrapperV1.sol",
            "file": "./interfaces/IERC20WrapperV1.sol",
            "id": 1585,
            "nodeType": "ImportDirective",
            "scope": 1927,
            "sourceUnit": 6162,
            "src": "239:42:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/INativeV1.sol",
            "file": "./interfaces/INativeV1.sol",
            "id": 1586,
            "nodeType": "ImportDirective",
            "scope": 1927,
            "sourceUnit": 8062,
            "src": "282:36:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": true,
            "baseContracts": [
              {
                "baseName": {
                  "id": 1587,
                  "name": "IERC1155Receiver",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5971,
                  "src": "358:16:2"
                },
                "id": 1588,
                "nodeType": "InheritanceSpecifier",
                "src": "358:16:2"
              },
              {
                "baseName": {
                  "id": 1589,
                  "name": "IERC165",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 6027,
                  "src": "376:7:2"
                },
                "id": 1590,
                "nodeType": "InheritanceSpecifier",
                "src": "376:7:2"
              }
            ],
            "contractDependencies": [
              5971,
              6027
            ],
            "contractKind": "contract",
            "fullyImplemented": false,
            "id": 1926,
            "linearizedBaseContracts": [
              1926,
              6027,
              5971
            ],
            "name": "MateriaOperator",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 1603,
                  "nodeType": "Block",
                  "src": "424:84:2",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1598,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1595,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1592,
                              "src": "442:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "expression": {
                                "id": 1596,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967292,
                                "src": "454:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 1597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "454:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "442:27:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4d6174657269613a2045787069726564",
                            "id": 1599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "471:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8b1793f2e3a8f807d7055404a53de2f1eb2b762a26ff9df06b03a7c4be85da9a",
                              "typeString": "literal_string \"Materia: Expired\""
                            },
                            "value": "Materia: Expired"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_8b1793f2e3a8f807d7055404a53de2f1eb2b762a26ff9df06b03a7c4be85da9a",
                              "typeString": "literal_string \"Materia: Expired\""
                            }
                          ],
                          "id": 1594,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "434:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "434:56:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1601,
                      "nodeType": "ExpressionStatement",
                      "src": "434:56:2"
                    },
                    {
                      "id": 1602,
                      "nodeType": "PlaceholderStatement",
                      "src": "500:1:2"
                    }
                  ]
                },
                "id": 1604,
                "name": "ensure",
                "nodeType": "ModifierDefinition",
                "parameters": {
                  "id": 1593,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1592,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 1604,
                      "src": "406:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1591,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "406:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "405:18:2"
                },
                "src": "390:118:2",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1612,
                  "nodeType": "Block",
                  "src": "575:2:2",
                  "statements": []
                },
                "id": 1613,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 1609,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1606,
                        "src": "565:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 1610,
                    "modifierName": {
                      "id": 1608,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "558:6:2"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "558:16:2"
                  }
                ],
                "name": "_ensure",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1607,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1606,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 1613,
                      "src": "531:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1605,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "531:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "530:18:2"
                },
                "returnParameters": {
                  "id": 1611,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "575:0:2"
                },
                "scope": 1926,
                "src": "514:63:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1651,
                  "nodeType": "Block",
                  "src": "684:217:2",
                  "statements": [
                    {
                      "clauses": [
                        {
                          "block": {
                            "id": 1633,
                            "nodeType": "Block",
                            "src": "752:39:2",
                            "statements": [
                              {
                                "expression": {
                                  "id": 1631,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 1629,
                                    "name": "ethItem",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1620,
                                    "src": "766:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "hexValue": "74727565",
                                    "id": 1630,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "776:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  "src": "766:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 1632,
                                "nodeType": "ExpressionStatement",
                                "src": "766:14:2"
                              }
                            ]
                          },
                          "errorName": "",
                          "id": 1634,
                          "nodeType": "TryCatchClause",
                          "src": "752:39:2"
                        },
                        {
                          "block": {
                            "id": 1648,
                            "nodeType": "Block",
                            "src": "798:97:2",
                            "statements": [
                              {
                                "expression": {
                                  "id": 1637,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 1635,
                                    "name": "ethItem",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1620,
                                    "src": "812:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "hexValue": "66616c7365",
                                    "id": 1636,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "822:5:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  },
                                  "src": "812:15:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 1638,
                                "nodeType": "ExpressionStatement",
                                "src": "812:15:2"
                              },
                              {
                                "expression": {
                                  "id": 1646,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 1639,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1622,
                                    "src": "841:2:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "id": 1644,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1615,
                                        "src": "878:5:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 1641,
                                            "name": "wrapper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1617,
                                            "src": "862:7:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 1640,
                                          "name": "IERC20WrapperV1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6161,
                                          "src": "846:15:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                            "typeString": "type(contract IERC20WrapperV1)"
                                          }
                                        },
                                        "id": 1642,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "846:24:2",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                          "typeString": "contract IERC20WrapperV1"
                                        }
                                      },
                                      "id": 1643,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "object",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6141,
                                      "src": "846:31:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 1645,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "846:38:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "841:43:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1647,
                                "nodeType": "ExpressionStatement",
                                "src": "841:43:2"
                              }
                            ]
                          },
                          "errorName": "",
                          "id": 1649,
                          "nodeType": "TryCatchClause",
                          "src": "792:103:2"
                        }
                      ],
                      "externalCall": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [
                              {
                                "id": 1625,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1615,
                                "src": "729:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1624,
                              "name": "IEthItemInteroperableInterface",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6250,
                              "src": "698:30:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                "typeString": "type(contract IEthItemInteroperableInterface)"
                              }
                            },
                            "id": 1626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "698:37:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                              "typeString": "contract IEthItemInteroperableInterface"
                            }
                          },
                          "id": 1627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mainInterface",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6203,
                          "src": "698:51:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 1628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "698:53:2",
                        "tryCall": true,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1650,
                      "nodeType": "TryStatement",
                      "src": "694:201:2"
                    }
                  ]
                },
                "id": 1652,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_isEthItem",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1618,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1615,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 1652,
                      "src": "603:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1614,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "603:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1617,
                      "mutability": "mutable",
                      "name": "wrapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 1652,
                      "src": "618:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1616,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "618:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "602:32:2"
                },
                "returnParameters": {
                  "id": 1623,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1620,
                      "mutability": "mutable",
                      "name": "ethItem",
                      "nodeType": "VariableDeclaration",
                      "scope": 1652,
                      "src": "658:12:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1619,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "658:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1622,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 1652,
                      "src": "672:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1621,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "672:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "657:26:2"
                },
                "scope": 1926,
                "src": "583:318:2",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1723,
                  "nodeType": "Block",
                  "src": "1065:371:2",
                  "statements": [
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1671,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967268,
                                  "src": "1111:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MateriaOperator_$1926",
                                    "typeString": "contract MateriaOperator"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MateriaOperator_$1926",
                                    "typeString": "contract MateriaOperator"
                                  }
                                ],
                                "id": 1670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1103:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1669,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1103:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1672,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1103:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1673,
                              "name": "wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1658,
                              "src": "1118:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 1666,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1654,
                                  "src": "1086:5:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1665,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6105,
                                "src": "1079:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$6105_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 1667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1079:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$6105",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1668,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "allowance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6064,
                            "src": "1079:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 1674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1079:47:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 1675,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1656,
                          "src": "1129:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1079:56:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1690,
                      "nodeType": "IfStatement",
                      "src": "1075:136:2",
                      "trueBody": {
                        "id": 1689,
                        "nodeType": "Block",
                        "src": "1137:74:2",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 1681,
                                  "name": "wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1658,
                                  "src": "1173:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1684,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1187:7:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 1683,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1187:7:2",
                                          "typeDescriptions": {}
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        }
                                      ],
                                      "id": 1682,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967269,
                                      "src": "1182:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1685,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1182:13:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_uint256",
                                      "typeString": "type(uint256)"
                                    }
                                  },
                                  "id": 1686,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "max",
                                  "nodeType": "MemberAccess",
                                  "src": "1182:17:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1678,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1654,
                                      "src": "1158:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1677,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6105,
                                    "src": "1151:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$6105_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 1679,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1151:13:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$6105",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 1680,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "approve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6074,
                                "src": "1151:21:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 1687,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1151:49:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 1688,
                            "nodeType": "ExpressionStatement",
                            "src": "1151:49:2"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        1692,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1692,
                          "mutability": "mutable",
                          "name": "id",
                          "nodeType": "VariableDeclaration",
                          "scope": 1723,
                          "src": "1222:10:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1691,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1222:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 1700,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 1697,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1654,
                            "src": "1268:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1698,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1656,
                            "src": "1275:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 1694,
                                "name": "wrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1658,
                                "src": "1254:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1693,
                              "name": "IERC20WrapperV1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6161,
                              "src": "1238:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "type(contract IERC20WrapperV1)"
                              }
                            },
                            "id": 1695,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1238:24:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          },
                          "id": 1696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mint",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6153,
                          "src": "1238:29:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_address_$",
                            "typeString": "function (address,uint256) external returns (uint256,address)"
                          }
                        },
                        "id": 1699,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1238:44:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$",
                          "typeString": "tuple(uint256,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1221:61:2"
                    },
                    {
                      "expression": {
                        "id": 1721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 1701,
                          "name": "newAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1663,
                          "src": "1293:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1718,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967268,
                                  "src": "1414:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MateriaOperator_$1926",
                                    "typeString": "contract MateriaOperator"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MateriaOperator_$1926",
                                    "typeString": "contract MateriaOperator"
                                  }
                                ],
                                "id": 1717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1406:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1716,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1406:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1406:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 1713,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 1703,
                                    "name": "interoperable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1661,
                                    "src": "1312:13:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 1710,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1692,
                                            "src": "1377:2:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 1707,
                                                "name": "wrapper",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1658,
                                                "src": "1352:7:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 1706,
                                              "name": "IERC20WrapperV1",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6161,
                                              "src": "1336:15:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                                "typeString": "type(contract IERC20WrapperV1)"
                                              }
                                            },
                                            "id": 1708,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1336:24:2",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                              "typeString": "contract IERC20WrapperV1"
                                            }
                                          },
                                          "id": 1709,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "asInteroperable",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6310,
                                          "src": "1336:40:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                            "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                          }
                                        },
                                        "id": 1711,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1336:44:2",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                          "typeString": "contract IEthItemInteroperableInterface"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                          "typeString": "contract IEthItemInteroperableInterface"
                                        }
                                      ],
                                      "id": 1705,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1328:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1704,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1328:7:2",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1712,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1328:53:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "1312:69:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1702,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6105,
                                "src": "1305:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$6105_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 1714,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1305:77:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$6105",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6044,
                            "src": "1305:87:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1305:124:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1293:136:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1722,
                      "nodeType": "ExpressionStatement",
                      "src": "1293:136:2"
                    }
                  ]
                },
                "id": 1724,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_wrapErc20",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1659,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1654,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 1724,
                      "src": "936:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1653,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "936:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1656,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1724,
                      "src": "959:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1655,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "959:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1658,
                      "mutability": "mutable",
                      "name": "wrapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 1724,
                      "src": "983:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1657,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "983:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "926:78:2"
                },
                "returnParameters": {
                  "id": 1664,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1661,
                      "mutability": "mutable",
                      "name": "interoperable",
                      "nodeType": "VariableDeclaration",
                      "scope": 1724,
                      "src": "1023:21:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1660,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1023:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1663,
                      "mutability": "mutable",
                      "name": "newAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1724,
                      "src": "1046:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1662,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1046:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1022:42:2"
                },
                "scope": 1926,
                "src": "907:529:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1761,
                  "nodeType": "Block",
                  "src": "1594:152:2",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1741,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1726,
                            "src": "1634:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1742,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1730,
                            "src": "1638:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 1738,
                                "name": "wrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1732,
                                "src": "1620:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1737,
                              "name": "IERC20WrapperV1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6161,
                              "src": "1604:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "type(contract IERC20WrapperV1)"
                              }
                            },
                            "id": 1739,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1604:24:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          },
                          "id": 1740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "burn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6341,
                          "src": "1604:29:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (uint256,uint256) external"
                          }
                        },
                        "id": 1743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1604:41:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1744,
                      "nodeType": "ExpressionStatement",
                      "src": "1604:41:2"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1748,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1728,
                            "src": "1683:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1749,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1734,
                            "src": "1693:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 1756,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967268,
                                    "src": "1732:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MateriaOperator_$1926",
                                      "typeString": "contract MateriaOperator"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MateriaOperator_$1926",
                                      "typeString": "contract MateriaOperator"
                                    }
                                  ],
                                  "id": 1755,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1724:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1754,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1724:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1724:13:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1751,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1728,
                                    "src": "1704:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1750,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6105,
                                  "src": "1697:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$6105_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 1752,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1697:16:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$6105",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 1753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6044,
                              "src": "1697:26:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 1758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1697:41:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 1745,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "1655:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 1747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "1655:27:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 1759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1655:84:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1760,
                      "nodeType": "ExpressionStatement",
                      "src": "1655:84:2"
                    }
                  ]
                },
                "id": 1762,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_unwrapErc20",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1735,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1726,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 1762,
                      "src": "1473:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1725,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1473:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1728,
                      "mutability": "mutable",
                      "name": "tokenOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 1762,
                      "src": "1493:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1727,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1493:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1730,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1762,
                      "src": "1519:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1729,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1519:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1732,
                      "mutability": "mutable",
                      "name": "wrapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 1762,
                      "src": "1543:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1731,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1543:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1734,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 1762,
                      "src": "1568:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1733,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1568:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1463:121:2"
                },
                "returnParameters": {
                  "id": 1736,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1594:0:2"
                },
                "scope": 1926,
                "src": "1442:304:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1788,
                  "nodeType": "Block",
                  "src": "1876:110:2",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1777,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1764,
                            "src": "1916:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 1778,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1766,
                            "src": "1920:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 1774,
                                "name": "wrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1768,
                                "src": "1902:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1773,
                              "name": "IERC20WrapperV1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6161,
                              "src": "1886:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "type(contract IERC20WrapperV1)"
                              }
                            },
                            "id": 1775,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1886:24:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          },
                          "id": 1776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "burn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6341,
                          "src": "1886:29:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (uint256,uint256) external"
                          }
                        },
                        "id": 1779,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1886:41:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1780,
                      "nodeType": "ExpressionStatement",
                      "src": "1886:41:2"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 1784,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1770,
                            "src": "1968:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1785,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1766,
                            "src": "1972:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 1781,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "1937:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 1783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9473,
                          "src": "1937:30:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 1786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1937:42:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1787,
                      "nodeType": "ExpressionStatement",
                      "src": "1937:42:2"
                    }
                  ]
                },
                "id": 1789,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_unwrapEth",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1771,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1764,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 1789,
                      "src": "1781:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1763,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1781:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1766,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1789,
                      "src": "1801:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1765,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1801:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1768,
                      "mutability": "mutable",
                      "name": "wrapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 1789,
                      "src": "1825:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1767,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1825:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1770,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 1789,
                      "src": "1850:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1769,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1850:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1771:95:2"
                },
                "returnParameters": {
                  "id": 1772,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1876:0:2"
                },
                "scope": 1926,
                "src": "1752:234:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1809,
                  "nodeType": "Block",
                  "src": "2090:86:2",
                  "statements": [
                    {
                      "expression": {
                        "id": 1807,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            null,
                            {
                              "id": 1798,
                              "name": "interoperable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1796,
                              "src": "2103:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "id": 1799,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "2100:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$_t_address_$",
                            "typeString": "tuple(,address)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1801,
                                    "name": "wrapper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1793,
                                    "src": "2136:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1800,
                                  "name": "IERC20WrapperV1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6161,
                                  "src": "2120:15:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                    "typeString": "type(contract IERC20WrapperV1)"
                                  }
                                },
                                "id": 1802,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2120:24:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                  "typeString": "contract IERC20WrapperV1"
                                }
                              },
                              "id": 1803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mintETH",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6160,
                              "src": "2120:32:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$__$returns$_t_uint256_$_t_address_$",
                                "typeString": "function () payable external returns (uint256,address)"
                              }
                            },
                            "id": 1805,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 1804,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1791,
                                "src": "2160:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "2120:47:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$_t_uint256_$_t_address_$value",
                              "typeString": "function () payable external returns (uint256,address)"
                            }
                          },
                          "id": 1806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2120:49:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$",
                            "typeString": "tuple(uint256,address)"
                          }
                        },
                        "src": "2100:69:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1808,
                      "nodeType": "ExpressionStatement",
                      "src": "2100:69:2"
                    }
                  ]
                },
                "functionSelector": "f717cd6d",
                "id": 1810,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_wrapEth",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1794,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1791,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1810,
                      "src": "2010:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1790,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2010:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1793,
                      "mutability": "mutable",
                      "name": "wrapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 1810,
                      "src": "2026:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1792,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2026:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2009:33:2"
                },
                "returnParameters": {
                  "id": 1797,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1796,
                      "mutability": "mutable",
                      "name": "interoperable",
                      "nodeType": "VariableDeclaration",
                      "scope": 1810,
                      "src": "2067:21:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1795,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2067:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2066:23:2"
                },
                "scope": 1926,
                "src": "1992:184:2",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1835,
                  "nodeType": "Block",
                  "src": "2278:79:2",
                  "statements": [
                    {
                      "expression": {
                        "id": 1833,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 1819,
                          "name": "newAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1817,
                          "src": "2288:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1820,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1814,
                            "src": "2300:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 1821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2310:2:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1828,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3138",
                                        "id": 1822,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2315:2:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_18_by_1",
                                          "typeString": "int_const 18"
                                        },
                                        "value": "18"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 1824,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1812,
                                                "src": "2331:5:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 1823,
                                              "name": "IERC20Data",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6119,
                                              "src": "2320:10:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20Data_$6119_$",
                                                "typeString": "type(contract IERC20Data)"
                                              }
                                            },
                                            "id": 1825,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2320:17:2",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20Data_$6119",
                                              "typeString": "contract IERC20Data"
                                            }
                                          },
                                          "id": 1826,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "decimals",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6118,
                                          "src": "2320:26:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                            "typeString": "function () view external returns (uint256)"
                                          }
                                        },
                                        "id": 1827,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2320:28:2",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2315:33:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 1829,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2314:35:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2310:39:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1831,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2309:41:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2300:50:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2288:62:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1834,
                      "nodeType": "ExpressionStatement",
                      "src": "2288:62:2"
                    }
                  ]
                },
                "id": 1836,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_adjustAmount",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1815,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1812,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 1836,
                      "src": "2205:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1811,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2205:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1814,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1836,
                      "src": "2220:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1813,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2220:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2204:31:2"
                },
                "returnParameters": {
                  "id": 1818,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1817,
                      "mutability": "mutable",
                      "name": "newAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1836,
                      "src": "2259:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1816,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2259:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2258:19:2"
                },
                "scope": 1926,
                "src": "2182:175:2",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1894,
                  "nodeType": "Block",
                  "src": "2472:427:2",
                  "statements": [
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1845,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1838,
                          "src": "2486:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 1848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2503:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 1847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2495:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1846,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2495:7:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2495:10:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2486:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 1892,
                        "nodeType": "Block",
                        "src": "2734:159:2",
                        "statements": [
                          {
                            "assignments": [
                              null,
                              1874
                            ],
                            "declarations": [
                              null,
                              {
                                "constant": false,
                                "id": 1874,
                                "mutability": "mutable",
                                "name": "itemId",
                                "nodeType": "VariableDeclaration",
                                "scope": 1892,
                                "src": "2751:14:2",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 1873,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2751:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 1879,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 1876,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1838,
                                  "src": "2780:5:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 1877,
                                  "name": "wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1840,
                                  "src": "2787:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1875,
                                "name": "_isEthItem",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1652,
                                "src": "2769:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$_t_uint256_$",
                                  "typeString": "function (address,address) view returns (bool,uint256)"
                                }
                              },
                              "id": 1878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2769:26:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                "typeString": "tuple(bool,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2748:47:2"
                          },
                          {
                            "expression": {
                              "id": 1890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 1880,
                                "name": "interoperable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1843,
                                "src": "2809:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1887,
                                        "name": "itemId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1874,
                                        "src": "2874:6:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 1884,
                                            "name": "wrapper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1840,
                                            "src": "2849:7:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 1883,
                                          "name": "IERC20WrapperV1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6161,
                                          "src": "2833:15:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                            "typeString": "type(contract IERC20WrapperV1)"
                                          }
                                        },
                                        "id": 1885,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2833:24:2",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                          "typeString": "contract IERC20WrapperV1"
                                        }
                                      },
                                      "id": 1886,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "asInteroperable",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6310,
                                      "src": "2833:40:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                        "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                      }
                                    },
                                    "id": 1888,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2833:48:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  ],
                                  "id": 1882,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2825:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1881,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2825:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2825:57:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2809:73:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1891,
                            "nodeType": "ExpressionStatement",
                            "src": "2809:73:2"
                          }
                        ]
                      },
                      "id": 1893,
                      "nodeType": "IfStatement",
                      "src": "2482:411:2",
                      "trueBody": {
                        "expression": {
                          "id": 1871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1851,
                            "name": "interoperable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1843,
                            "src": "2519:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 1863,
                                                    "name": "this",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967268,
                                                    "src": "2659:4:2",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_contract$_MateriaOperator_$1926",
                                                      "typeString": "contract MateriaOperator"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_contract$_MateriaOperator_$1926",
                                                      "typeString": "contract MateriaOperator"
                                                    }
                                                  ],
                                                  "id": 1862,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "2651:7:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                  },
                                                  "typeName": {
                                                    "id": 1861,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2651:7:2",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 1864,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2651:13:2",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 1860,
                                              "name": "IMateriaOrchestrator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7665,
                                              "src": "2630:20:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                                "typeString": "type(contract IMateriaOrchestrator)"
                                              }
                                            },
                                            "id": 1865,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2630:35:2",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                              "typeString": "contract IMateriaOrchestrator"
                                            }
                                          },
                                          "id": 1866,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "ETHEREUM_OBJECT_ID",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7307,
                                          "src": "2630:54:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                            "typeString": "function () view external returns (uint256)"
                                          }
                                        },
                                        "id": 1867,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2630:56:2",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1859,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2622:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 1858,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2622:7:2",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1868,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2622:65:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1855,
                                        "name": "wrapper",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1840,
                                        "src": "2576:7:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1854,
                                      "name": "IERC20WrapperV1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6161,
                                      "src": "2560:15:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                        "typeString": "type(contract IERC20WrapperV1)"
                                      }
                                    },
                                    "id": 1856,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2560:24:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                      "typeString": "contract IERC20WrapperV1"
                                    }
                                  },
                                  "id": 1857,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "asInteroperable",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6310,
                                  "src": "2560:40:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                    "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                  }
                                },
                                "id": 1869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2560:145:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                  "typeString": "contract IEthItemInteroperableInterface"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                  "typeString": "contract IEthItemInteroperableInterface"
                                }
                              ],
                              "id": 1853,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2535:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1852,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2535:7:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1870,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2535:184:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2519:200:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1872,
                        "nodeType": "ExpressionStatement",
                        "src": "2519:200:2"
                      }
                    }
                  ]
                },
                "id": 1895,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_tokenToInteroperable",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1841,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1838,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 1895,
                      "src": "2394:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1837,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2394:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1840,
                      "mutability": "mutable",
                      "name": "wrapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 1895,
                      "src": "2409:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1839,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2409:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2393:32:2"
                },
                "returnParameters": {
                  "id": 1844,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1843,
                      "mutability": "mutable",
                      "name": "interoperable",
                      "nodeType": "VariableDeclaration",
                      "scope": 1895,
                      "src": "2449:21:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1842,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2449:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2448:23:2"
                },
                "scope": 1926,
                "src": "2363:536:2",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1924,
                  "nodeType": "Block",
                  "src": "3018:181:2",
                  "statements": [
                    {
                      "clauses": [
                        {
                          "block": {
                            "id": 1917,
                            "nodeType": "Block",
                            "src": "3092:60:2",
                            "statements": [
                              {
                                "expression": {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1912,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1910,
                                      "name": "decimals",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1908,
                                      "src": "3113:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 1911,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3125:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "3113:13:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "id": 1914,
                                    "name": "decimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1908,
                                    "src": "3133:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1915,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "3113:28:2",
                                  "trueExpression": {
                                    "hexValue": "30",
                                    "id": 1913,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3129:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 1901,
                                "id": 1916,
                                "nodeType": "Return",
                                "src": "3106:35:2"
                              }
                            ]
                          },
                          "errorName": "",
                          "id": 1918,
                          "nodeType": "TryCatchClause",
                          "parameters": {
                            "id": 1909,
                            "nodeType": "ParameterList",
                            "parameters": [
                              {
                                "constant": false,
                                "id": 1908,
                                "mutability": "mutable",
                                "name": "decimals",
                                "nodeType": "VariableDeclaration",
                                "scope": 1918,
                                "src": "3074:16:2",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 1907,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3074:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "src": "3073:18:2"
                          },
                          "src": "3065:87:2"
                        },
                        {
                          "block": {
                            "id": 1921,
                            "nodeType": "Block",
                            "src": "3159:34:2",
                            "statements": [
                              {
                                "expression": {
                                  "hexValue": "3138",
                                  "id": 1919,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3180:2:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_18_by_1",
                                    "typeString": "int_const 18"
                                  },
                                  "value": "18"
                                },
                                "functionReturnParameters": 1901,
                                "id": 1920,
                                "nodeType": "Return",
                                "src": "3173:9:2"
                              }
                            ]
                          },
                          "errorName": "",
                          "id": 1922,
                          "nodeType": "TryCatchClause",
                          "src": "3153:40:2"
                        }
                      ],
                      "externalCall": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [
                              {
                                "id": 1903,
                                "name": "collection",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1897,
                                "src": "3042:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1902,
                              "name": "INativeV1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8061,
                              "src": "3032:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_INativeV1_$8061_$",
                                "typeString": "type(contract INativeV1)"
                              }
                            },
                            "id": 1904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3032:21:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INativeV1_$8061",
                              "typeString": "contract INativeV1"
                            }
                          },
                          "id": 1905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "decimals",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8004,
                          "src": "3032:30:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 1906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3032:32:2",
                        "tryCall": true,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1923,
                      "nodeType": "TryStatement",
                      "src": "3028:165:2"
                    }
                  ]
                },
                "id": 1925,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_collectionDecimals",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1898,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1897,
                      "mutability": "mutable",
                      "name": "collection",
                      "nodeType": "VariableDeclaration",
                      "scope": 1925,
                      "src": "2938:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1896,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2938:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2937:20:2"
                },
                "returnParameters": {
                  "id": 1901,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1900,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1925,
                      "src": "3005:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1899,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3005:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3004:9:2"
                },
                "scope": 1926,
                "src": "2909:290:2",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 1927,
            "src": "321:2880:2"
          }
        ],
        "src": "33:3169:2"
      }
    },
    "contracts/MateriaOrchestrator.sol": {
      "id": 3,
      "AST": {
        "absolutePath": "contracts/MateriaOrchestrator.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ],
          "IDoubleProxy": [
            5811
          ],
          "IERC1155": [
            5933
          ],
          "IERC1155Receiver": [
            5971
          ],
          "IERC1155Views": [
            6015
          ],
          "IERC165": [
            6027
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ],
          "IERC20WrapperV1": [
            6161
          ],
          "IEthItemInteroperableInterface": [
            6250
          ],
          "IEthItemMainInterface": [
            6365
          ],
          "IEthItemModelBase": [
            6392
          ],
          "IMVDFunctionalitiesManager": [
            6812
          ],
          "IMVDProxy": [
            7099
          ],
          "IMateriaFactory": [
            7180
          ],
          "IMateriaOrchestrator": [
            7665
          ],
          "IMateriaPair": [
            7944
          ],
          "INativeV1": [
            8061
          ],
          "MateriaLibrary": [
            8693
          ],
          "MateriaOrchestrator": [
            3041
          ],
          "Proxy": [
            1946
          ],
          "SafeMath": [
            9314
          ],
          "TransferHelper": [
            9474
          ]
        },
        "id": 3042,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1928,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "34:22:3"
          },
          {
            "absolutePath": "contracts/interfaces/IMVDFunctionalitiesManager.sol",
            "file": "./interfaces/IMVDFunctionalitiesManager.sol",
            "id": 1929,
            "nodeType": "ImportDirective",
            "scope": 3042,
            "sourceUnit": 6813,
            "src": "58:53:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IDoubleProxy.sol",
            "file": "./interfaces/IDoubleProxy.sol",
            "id": 1930,
            "nodeType": "ImportDirective",
            "scope": 3042,
            "sourceUnit": 5812,
            "src": "112:39:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMVDProxy.sol",
            "file": "./interfaces/IMVDProxy.sol",
            "id": 1931,
            "nodeType": "ImportDirective",
            "scope": 3042,
            "sourceUnit": 7100,
            "src": "152:36:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaOrchestrator.sol",
            "file": "./interfaces/IMateriaOrchestrator.sol",
            "id": 1932,
            "nodeType": "ImportDirective",
            "scope": 3042,
            "sourceUnit": 7666,
            "src": "190:47:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaFactory.sol",
            "file": "./interfaces/IMateriaFactory.sol",
            "id": 1933,
            "nodeType": "ImportDirective",
            "scope": 3042,
            "sourceUnit": 7181,
            "src": "238:42:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IEthItemInteroperableInterface.sol",
            "file": "./interfaces/IEthItemInteroperableInterface.sol",
            "id": 1934,
            "nodeType": "ImportDirective",
            "scope": 3042,
            "sourceUnit": 6251,
            "src": "282:57:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/INativeV1.sol",
            "file": "./interfaces/INativeV1.sol",
            "id": 1935,
            "nodeType": "ImportDirective",
            "scope": 3042,
            "sourceUnit": 8062,
            "src": "340:36:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20WrapperV1.sol",
            "file": "./interfaces/IERC20WrapperV1.sol",
            "id": 1936,
            "nodeType": "ImportDirective",
            "scope": 3042,
            "sourceUnit": 6162,
            "src": "377:42:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MateriaLibrary.sol",
            "file": "./libraries/MateriaLibrary.sol",
            "id": 1937,
            "nodeType": "ImportDirective",
            "scope": 3042,
            "sourceUnit": 8694,
            "src": "421:40:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/TransferHelper.sol",
            "file": "./libraries/TransferHelper.sol",
            "id": 1938,
            "nodeType": "ImportDirective",
            "scope": 3042,
            "sourceUnit": 9475,
            "src": "462:40:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": true,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "fullyImplemented": true,
            "id": 1946,
            "linearizedBaseContracts": [
              1946
            ],
            "name": "Proxy",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 1944,
                  "nodeType": "Block",
                  "src": "594:430:3",
                  "statements": [
                    {
                      "AST": {
                        "nodeType": "YulBlock",
                        "src": "613:405:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "640:1:3",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "643:1:3",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "arguments": [],
                                  "functionName": {
                                    "name": "calldatasize",
                                    "nodeType": "YulIdentifier",
                                    "src": "646:12:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "646:14:3"
                                }
                              ],
                              "functionName": {
                                "name": "calldatacopy",
                                "nodeType": "YulIdentifier",
                                "src": "627:12:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "627:34:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "627:34:3"
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "674:74:3",
                            "value": {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "functionName": {
                                    "name": "gas",
                                    "nodeType": "YulIdentifier",
                                    "src": "701:3:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "701:5:3"
                                },
                                {
                                  "name": "implementation",
                                  "nodeType": "YulIdentifier",
                                  "src": "708:14:3"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "724:1:3",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "arguments": [],
                                  "functionName": {
                                    "name": "calldatasize",
                                    "nodeType": "YulIdentifier",
                                    "src": "727:12:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "727:14:3"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "743:1:3",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "746:1:3",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "delegatecall",
                                "nodeType": "YulIdentifier",
                                "src": "688:12:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "688:60:3"
                            },
                            "variables": [
                              {
                                "name": "result",
                                "nodeType": "YulTypedName",
                                "src": "678:6:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "776:1:3",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "779:1:3",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "arguments": [],
                                  "functionName": {
                                    "name": "returndatasize",
                                    "nodeType": "YulIdentifier",
                                    "src": "782:14:3"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "782:16:3"
                                }
                              ],
                              "functionName": {
                                "name": "returndatacopy",
                                "nodeType": "YulIdentifier",
                                "src": "761:14:3"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "761:38:3"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "761:38:3"
                          },
                          {
                            "cases": [
                              {
                                "body": {
                                  "nodeType": "YulBlock",
                                  "src": "849:67:3",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "878:1:3",
                                            "type": "",
                                            "value": "0"
                                          },
                                          {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "returndatasize",
                                              "nodeType": "YulIdentifier",
                                              "src": "881:14:3"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "881:16:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "revert",
                                          "nodeType": "YulIdentifier",
                                          "src": "871:6:3"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "871:27:3"
                                      },
                                      "nodeType": "YulExpressionStatement",
                                      "src": "871:27:3"
                                    }
                                  ]
                                },
                                "nodeType": "YulCase",
                                "src": "842:74:3",
                                "value": {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "847:1:3",
                                  "type": "",
                                  "value": "0"
                                }
                              },
                              {
                                "body": {
                                  "nodeType": "YulBlock",
                                  "src": "941:67:3",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "970:1:3",
                                            "type": "",
                                            "value": "0"
                                          },
                                          {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "returndatasize",
                                              "nodeType": "YulIdentifier",
                                              "src": "973:14:3"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "973:16:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "return",
                                          "nodeType": "YulIdentifier",
                                          "src": "963:6:3"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "963:27:3"
                                      },
                                      "nodeType": "YulExpressionStatement",
                                      "src": "963:27:3"
                                    }
                                  ]
                                },
                                "nodeType": "YulCase",
                                "src": "933:75:3",
                                "value": "default"
                              }
                            ],
                            "expression": {
                              "name": "result",
                              "nodeType": "YulIdentifier",
                              "src": "819:6:3"
                            },
                            "nodeType": "YulSwitch",
                            "src": "812:196:3"
                          }
                        ]
                      },
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 1940,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "708:14:3",
                          "valueSize": 1
                        }
                      ],
                      "id": 1943,
                      "nodeType": "InlineAssembly",
                      "src": "604:414:3"
                    }
                  ]
                },
                "id": 1945,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_delegate",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1941,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1940,
                      "mutability": "mutable",
                      "name": "implementation",
                      "nodeType": "VariableDeclaration",
                      "scope": 1945,
                      "src": "553:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1939,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "553:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "552:24:3"
                },
                "returnParameters": {
                  "id": 1942,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "594:0:3"
                },
                "scope": 1946,
                "src": "534:490:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              }
            ],
            "scope": 3042,
            "src": "504:522:3"
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 1947,
                  "name": "Proxy",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1946,
                  "src": "1060:5:3"
                },
                "id": 1948,
                "nodeType": "InheritanceSpecifier",
                "src": "1060:5:3"
              },
              {
                "baseName": {
                  "id": 1949,
                  "name": "IMateriaOrchestrator",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 7665,
                  "src": "1067:20:3"
                },
                "id": 1950,
                "nodeType": "InheritanceSpecifier",
                "src": "1067:20:3"
              }
            ],
            "contractDependencies": [
              1946,
              5971,
              7665
            ],
            "contractKind": "contract",
            "fullyImplemented": true,
            "id": 3041,
            "linearizedBaseContracts": [
              3041,
              7665,
              5971,
              1946
            ],
            "name": "MateriaOrchestrator",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "baseFunctions": [
                  7328
                ],
                "constant": false,
                "functionSelector": "4eb9b592",
                "id": 1954,
                "mutability": "mutable",
                "name": "doubleProxy",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1953,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1114:8:3"
                },
                "scope": 3041,
                "src": "1094:40:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IDoubleProxy_$5811",
                  "typeString": "contract IDoubleProxy"
                },
                "typeName": {
                  "id": 1952,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 1951,
                    "name": "IDoubleProxy",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5811,
                    "src": "1094:12:3"
                  },
                  "referencedDeclaration": 5811,
                  "src": "1094:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IDoubleProxy_$5811",
                    "typeString": "contract IDoubleProxy"
                  }
                },
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7312
                ],
                "constant": false,
                "functionSelector": "2b3297f9",
                "id": 1957,
                "mutability": "mutable",
                "name": "swapper",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1956,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1156:8:3"
                },
                "scope": 3041,
                "src": "1141:31:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1955,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1141:7:3",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7317
                ],
                "constant": false,
                "functionSelector": "55809f9f",
                "id": 1960,
                "mutability": "mutable",
                "name": "liquidityAdder",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1959,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1193:8:3"
                },
                "scope": 3041,
                "src": "1178:38:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1958,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1178:7:3",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7322
                ],
                "constant": false,
                "functionSelector": "cafd47df",
                "id": 1963,
                "mutability": "mutable",
                "name": "liquidityRemover",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1962,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1237:8:3"
                },
                "scope": 3041,
                "src": "1222:40:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1961,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1222:7:3",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7290
                ],
                "constant": false,
                "functionSelector": "c45a0155",
                "id": 1967,
                "mutability": "mutable",
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1966,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1292:8:3"
                },
                "scope": 3041,
                "src": "1269:39:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                  "typeString": "contract IMateriaFactory"
                },
                "typeName": {
                  "id": 1965,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 1964,
                    "name": "IMateriaFactory",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7180,
                    "src": "1269:15:3"
                  },
                  "referencedDeclaration": 7180,
                  "src": "1269:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                    "typeString": "contract IMateriaFactory"
                  }
                },
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7302
                ],
                "constant": false,
                "functionSelector": "1b5f58c8",
                "id": 1971,
                "mutability": "mutable",
                "name": "erc20Wrapper",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1970,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1337:8:3"
                },
                "scope": 3041,
                "src": "1314:44:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                  "typeString": "contract IERC20WrapperV1"
                },
                "typeName": {
                  "id": 1969,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 1968,
                    "name": "IERC20WrapperV1",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 6161,
                    "src": "1314:15:3"
                  },
                  "referencedDeclaration": 6161,
                  "src": "1314:15:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                    "typeString": "contract IERC20WrapperV1"
                  }
                },
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7296
                ],
                "constant": false,
                "functionSelector": "f4734b0c",
                "id": 1975,
                "mutability": "mutable",
                "name": "bridgeToken",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1974,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1378:8:3"
                },
                "scope": 3041,
                "src": "1364:34:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IERC20_$6105",
                  "typeString": "contract IERC20"
                },
                "typeName": {
                  "id": 1973,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 1972,
                    "name": "IERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 6105,
                    "src": "1364:6:3"
                  },
                  "referencedDeclaration": 6105,
                  "src": "1364:6:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$6105",
                    "typeString": "contract IERC20"
                  }
                },
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7307
                ],
                "constant": false,
                "functionSelector": "be745fff",
                "id": 1978,
                "mutability": "mutable",
                "name": "ETHEREUM_OBJECT_ID",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1977,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1419:8:3"
                },
                "scope": 3041,
                "src": "1404:42:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1976,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1404:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2043,
                  "nodeType": "Block",
                  "src": "1724:441:3",
                  "statements": [
                    {
                      "expression": {
                        "id": 1999,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 1995,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1967,
                          "src": "1734:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                            "typeString": "contract IMateriaFactory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 1997,
                              "name": "initialFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1980,
                              "src": "1760:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1996,
                            "name": "IMateriaFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7180,
                            "src": "1744:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IMateriaFactory_$7180_$",
                              "typeString": "type(contract IMateriaFactory)"
                            }
                          },
                          "id": 1998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1744:31:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                            "typeString": "contract IMateriaFactory"
                          }
                        },
                        "src": "1734:41:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                          "typeString": "contract IMateriaFactory"
                        }
                      },
                      "id": 2000,
                      "nodeType": "ExpressionStatement",
                      "src": "1734:41:3"
                    },
                    {
                      "expression": {
                        "id": 2005,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2001,
                          "name": "bridgeToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1975,
                          "src": "1785:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$6105",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 2003,
                              "name": "initialBridgeToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1982,
                              "src": "1806:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2002,
                            "name": "IERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6105,
                            "src": "1799:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IERC20_$6105_$",
                              "typeString": "type(contract IERC20)"
                            }
                          },
                          "id": 2004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1799:26:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$6105",
                            "typeString": "contract IERC20"
                          }
                        },
                        "src": "1785:40:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$6105",
                          "typeString": "contract IERC20"
                        }
                      },
                      "id": 2006,
                      "nodeType": "ExpressionStatement",
                      "src": "1785:40:3"
                    },
                    {
                      "expression": {
                        "id": 2011,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2007,
                          "name": "erc20Wrapper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1971,
                          "src": "1835:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                            "typeString": "contract IERC20WrapperV1"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 2009,
                              "name": "initialErc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1984,
                              "src": "1866:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2008,
                            "name": "IERC20WrapperV1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6161,
                            "src": "1850:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                              "typeString": "type(contract IERC20WrapperV1)"
                            }
                          },
                          "id": 2010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1850:36:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                            "typeString": "contract IERC20WrapperV1"
                          }
                        },
                        "src": "1835:51:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                          "typeString": "contract IERC20WrapperV1"
                        }
                      },
                      "id": 2012,
                      "nodeType": "ExpressionStatement",
                      "src": "1835:51:3"
                    },
                    {
                      "expression": {
                        "id": 2023,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2013,
                          "name": "ETHEREUM_OBJECT_ID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1978,
                          "src": "1896:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "54484520455448455245554d204f424a454354204954",
                                      "id": 2019,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1941:24:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_186184b38c30620314f957b261f907a96e7bd12c377a91dcf1ef57fdea9aad37",
                                        "typeString": "literal_string \"THE ETHEREUM OBJECT IT\""
                                      },
                                      "value": "THE ETHEREUM OBJECT IT"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_186184b38c30620314f957b261f907a96e7bd12c377a91dcf1ef57fdea9aad37",
                                        "typeString": "literal_string \"THE ETHEREUM OBJECT IT\""
                                      }
                                    ],
                                    "id": 2018,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1935:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 2017,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1935:5:3",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2020,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1935:31:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 2016,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "1925:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 2021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1925:42:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2015,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1917:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 2014,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1917:7:3",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2022,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1917:51:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1896:72:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2024,
                      "nodeType": "ExpressionStatement",
                      "src": "1896:72:3"
                    },
                    {
                      "expression": {
                        "id": 2029,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2025,
                          "name": "doubleProxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1954,
                          "src": "1978:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDoubleProxy_$5811",
                            "typeString": "contract IDoubleProxy"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 2027,
                              "name": "initialDoubleProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1986,
                              "src": "2005:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2026,
                            "name": "IDoubleProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5811,
                            "src": "1992:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IDoubleProxy_$5811_$",
                              "typeString": "type(contract IDoubleProxy)"
                            }
                          },
                          "id": 2028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1992:32:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDoubleProxy_$5811",
                            "typeString": "contract IDoubleProxy"
                          }
                        },
                        "src": "1978:46:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDoubleProxy_$5811",
                          "typeString": "contract IDoubleProxy"
                        }
                      },
                      "id": 2030,
                      "nodeType": "ExpressionStatement",
                      "src": "1978:46:3"
                    },
                    {
                      "expression": {
                        "id": 2033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2031,
                          "name": "liquidityAdder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1960,
                          "src": "2034:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 2032,
                          "name": "initialLiquidityAdder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1988,
                          "src": "2051:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2034:38:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2034,
                      "nodeType": "ExpressionStatement",
                      "src": "2034:38:3"
                    },
                    {
                      "expression": {
                        "id": 2037,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2035,
                          "name": "liquidityRemover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1963,
                          "src": "2082:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 2036,
                          "name": "initialLiquidityRemover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1990,
                          "src": "2101:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2082:42:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2038,
                      "nodeType": "ExpressionStatement",
                      "src": "2082:42:3"
                    },
                    {
                      "expression": {
                        "id": 2041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2039,
                          "name": "swapper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1957,
                          "src": "2134:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 2040,
                          "name": "initialSwapper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1992,
                          "src": "2144:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2134:24:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2042,
                      "nodeType": "ExpressionStatement",
                      "src": "2134:24:3"
                    }
                  ]
                },
                "id": 2044,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1993,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1980,
                      "mutability": "mutable",
                      "name": "initialFactory",
                      "nodeType": "VariableDeclaration",
                      "scope": 2044,
                      "src": "1474:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1979,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1474:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1982,
                      "mutability": "mutable",
                      "name": "initialBridgeToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 2044,
                      "src": "1506:26:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1981,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1506:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1984,
                      "mutability": "mutable",
                      "name": "initialErc20Wrapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 2044,
                      "src": "1542:27:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1983,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1542:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1986,
                      "mutability": "mutable",
                      "name": "initialDoubleProxy",
                      "nodeType": "VariableDeclaration",
                      "scope": 2044,
                      "src": "1579:26:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1985,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1579:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1988,
                      "mutability": "mutable",
                      "name": "initialLiquidityAdder",
                      "nodeType": "VariableDeclaration",
                      "scope": 2044,
                      "src": "1615:29:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1987,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1615:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1990,
                      "mutability": "mutable",
                      "name": "initialLiquidityRemover",
                      "nodeType": "VariableDeclaration",
                      "scope": 2044,
                      "src": "1654:31:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1989,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1654:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1992,
                      "mutability": "mutable",
                      "name": "initialSwapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 2044,
                      "src": "1695:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1991,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1695:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1464:259:3"
                },
                "returnParameters": {
                  "id": 1994,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1724:0:3"
                },
                "scope": 3041,
                "src": "1453:712:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7214
                ],
                "body": {
                  "id": 2058,
                  "nodeType": "Block",
                  "src": "2245:59:3",
                  "statements": [
                    {
                      "expression": {
                        "id": 2056,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2052,
                          "name": "doubleProxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1954,
                          "src": "2255:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDoubleProxy_$5811",
                            "typeString": "contract IDoubleProxy"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 2054,
                              "name": "newDoubleProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2046,
                              "src": "2282:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2053,
                            "name": "IDoubleProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5811,
                            "src": "2269:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IDoubleProxy_$5811_$",
                              "typeString": "type(contract IDoubleProxy)"
                            }
                          },
                          "id": 2055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2269:28:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDoubleProxy_$5811",
                            "typeString": "contract IDoubleProxy"
                          }
                        },
                        "src": "2255:42:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDoubleProxy_$5811",
                          "typeString": "contract IDoubleProxy"
                        }
                      },
                      "id": 2057,
                      "nodeType": "ExpressionStatement",
                      "src": "2255:42:3"
                    }
                  ]
                },
                "functionSelector": "cbd99d03",
                "id": 2059,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2050,
                    "modifierName": {
                      "id": 2049,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "2237:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "2237:7:3"
                  }
                ],
                "name": "setDoubleProxy",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2048,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "2228:8:3"
                },
                "parameters": {
                  "id": 2047,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2046,
                      "mutability": "mutable",
                      "name": "newDoubleProxy",
                      "nodeType": "VariableDeclaration",
                      "scope": 2059,
                      "src": "2195:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2045,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2195:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2194:24:3"
                },
                "returnParameters": {
                  "id": 2051,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2245:0:3"
                },
                "scope": 3041,
                "src": "2171:133:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7219
                ],
                "body": {
                  "id": 2073,
                  "nodeType": "Block",
                  "src": "2384:53:3",
                  "statements": [
                    {
                      "expression": {
                        "id": 2071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2067,
                          "name": "bridgeToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1975,
                          "src": "2394:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$6105",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 2069,
                              "name": "newBridgeToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2061,
                              "src": "2415:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2068,
                            "name": "IERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6105,
                            "src": "2408:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IERC20_$6105_$",
                              "typeString": "type(contract IERC20)"
                            }
                          },
                          "id": 2070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2408:22:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$6105",
                            "typeString": "contract IERC20"
                          }
                        },
                        "src": "2394:36:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$6105",
                          "typeString": "contract IERC20"
                        }
                      },
                      "id": 2072,
                      "nodeType": "ExpressionStatement",
                      "src": "2394:36:3"
                    }
                  ]
                },
                "functionSelector": "23ae8401",
                "id": 2074,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2065,
                    "modifierName": {
                      "id": 2064,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "2376:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "2376:7:3"
                  }
                ],
                "name": "setBridgeToken",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2063,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "2367:8:3"
                },
                "parameters": {
                  "id": 2062,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2061,
                      "mutability": "mutable",
                      "name": "newBridgeToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 2074,
                      "src": "2334:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2060,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2334:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2333:24:3"
                },
                "returnParameters": {
                  "id": 2066,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2384:0:3"
                },
                "scope": 3041,
                "src": "2310:127:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7224
                ],
                "body": {
                  "id": 2088,
                  "nodeType": "Block",
                  "src": "2519:64:3",
                  "statements": [
                    {
                      "expression": {
                        "id": 2086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2082,
                          "name": "erc20Wrapper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1971,
                          "src": "2529:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                            "typeString": "contract IERC20WrapperV1"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 2084,
                              "name": "newErc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2076,
                              "src": "2560:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2083,
                            "name": "IERC20WrapperV1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6161,
                            "src": "2544:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                              "typeString": "type(contract IERC20WrapperV1)"
                            }
                          },
                          "id": 2085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2544:32:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                            "typeString": "contract IERC20WrapperV1"
                          }
                        },
                        "src": "2529:47:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                          "typeString": "contract IERC20WrapperV1"
                        }
                      },
                      "id": 2087,
                      "nodeType": "ExpressionStatement",
                      "src": "2529:47:3"
                    }
                  ]
                },
                "functionSelector": "d7565a0c",
                "id": 2089,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2080,
                    "modifierName": {
                      "id": 2079,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "2511:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "2511:7:3"
                  }
                ],
                "name": "setErc20Wrapper",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2078,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "2502:8:3"
                },
                "parameters": {
                  "id": 2077,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2076,
                      "mutability": "mutable",
                      "name": "newErc20Wrapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 2089,
                      "src": "2468:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2075,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2468:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2467:25:3"
                },
                "returnParameters": {
                  "id": 2081,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2519:0:3"
                },
                "scope": 3041,
                "src": "2443:140:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7229
                ],
                "body": {
                  "id": 2103,
                  "nodeType": "Block",
                  "src": "2655:54:3",
                  "statements": [
                    {
                      "expression": {
                        "id": 2101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2097,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1967,
                          "src": "2665:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                            "typeString": "contract IMateriaFactory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 2099,
                              "name": "newFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2091,
                              "src": "2691:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2098,
                            "name": "IMateriaFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7180,
                            "src": "2675:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IMateriaFactory_$7180_$",
                              "typeString": "type(contract IMateriaFactory)"
                            }
                          },
                          "id": 2100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2675:27:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                            "typeString": "contract IMateriaFactory"
                          }
                        },
                        "src": "2665:37:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                          "typeString": "contract IMateriaFactory"
                        }
                      },
                      "id": 2102,
                      "nodeType": "ExpressionStatement",
                      "src": "2665:37:3"
                    }
                  ]
                },
                "functionSelector": "5bb47808",
                "id": 2104,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2095,
                    "modifierName": {
                      "id": 2094,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "2647:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "2647:7:3"
                  }
                ],
                "name": "setFactory",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2093,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "2638:8:3"
                },
                "parameters": {
                  "id": 2092,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2091,
                      "mutability": "mutable",
                      "name": "newFactory",
                      "nodeType": "VariableDeclaration",
                      "scope": 2104,
                      "src": "2609:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2090,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2609:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2608:20:3"
                },
                "returnParameters": {
                  "id": 2096,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2655:0:3"
                },
                "scope": 3041,
                "src": "2589:120:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7234
                ],
                "body": {
                  "id": 2116,
                  "nodeType": "Block",
                  "src": "2799:57:3",
                  "statements": [
                    {
                      "expression": {
                        "id": 2114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2112,
                          "name": "ETHEREUM_OBJECT_ID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1978,
                          "src": "2809:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 2113,
                          "name": "newEthereumObjectId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2106,
                          "src": "2830:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2809:40:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2115,
                      "nodeType": "ExpressionStatement",
                      "src": "2809:40:3"
                    }
                  ]
                },
                "functionSelector": "02af0fb5",
                "id": 2117,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2110,
                    "modifierName": {
                      "id": 2109,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "2791:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "2791:7:3"
                  }
                ],
                "name": "setEthereumObjectId",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2108,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "2782:8:3"
                },
                "parameters": {
                  "id": 2107,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2106,
                      "mutability": "mutable",
                      "name": "newEthereumObjectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2117,
                      "src": "2744:27:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2105,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2744:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2743:29:3"
                },
                "returnParameters": {
                  "id": 2111,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2799:0:3"
                },
                "scope": 3041,
                "src": "2715:141:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7239
                ],
                "body": {
                  "id": 2129,
                  "nodeType": "Block",
                  "src": "2926:35:3",
                  "statements": [
                    {
                      "expression": {
                        "id": 2127,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2125,
                          "name": "swapper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1957,
                          "src": "2936:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 2126,
                          "name": "_swapper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2119,
                          "src": "2946:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2936:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2128,
                      "nodeType": "ExpressionStatement",
                      "src": "2936:18:3"
                    }
                  ]
                },
                "functionSelector": "9c82f2a4",
                "id": 2130,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2123,
                    "modifierName": {
                      "id": 2122,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "2918:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "2918:7:3"
                  }
                ],
                "name": "setSwapper",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2121,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "2909:8:3"
                },
                "parameters": {
                  "id": 2120,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2119,
                      "mutability": "mutable",
                      "name": "_swapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 2130,
                      "src": "2882:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2118,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2882:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2881:18:3"
                },
                "returnParameters": {
                  "id": 2124,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2926:0:3"
                },
                "scope": 3041,
                "src": "2862:99:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7244
                ],
                "body": {
                  "id": 2142,
                  "nodeType": "Block",
                  "src": "3036:40:3",
                  "statements": [
                    {
                      "expression": {
                        "id": 2140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2138,
                          "name": "liquidityAdder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1960,
                          "src": "3046:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 2139,
                          "name": "_adder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2132,
                          "src": "3063:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3046:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2141,
                      "nodeType": "ExpressionStatement",
                      "src": "3046:23:3"
                    }
                  ]
                },
                "functionSelector": "9f184011",
                "id": 2143,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2136,
                    "modifierName": {
                      "id": 2135,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "3028:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3028:7:3"
                  }
                ],
                "name": "setLiquidityAdder",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2134,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3019:8:3"
                },
                "parameters": {
                  "id": 2133,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2132,
                      "mutability": "mutable",
                      "name": "_adder",
                      "nodeType": "VariableDeclaration",
                      "scope": 2143,
                      "src": "2994:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2131,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2994:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2993:16:3"
                },
                "returnParameters": {
                  "id": 2137,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3036:0:3"
                },
                "scope": 3041,
                "src": "2967:109:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7249
                ],
                "body": {
                  "id": 2155,
                  "nodeType": "Block",
                  "src": "3155:44:3",
                  "statements": [
                    {
                      "expression": {
                        "id": 2153,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 2151,
                          "name": "liquidityRemover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1963,
                          "src": "3165:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 2152,
                          "name": "_remover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2145,
                          "src": "3184:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3165:27:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2154,
                      "nodeType": "ExpressionStatement",
                      "src": "3165:27:3"
                    }
                  ]
                },
                "functionSelector": "781cef2a",
                "id": 2156,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2149,
                    "modifierName": {
                      "id": 2148,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "3147:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3147:7:3"
                  }
                ],
                "name": "setLiquidityRemover",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2147,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3138:8:3"
                },
                "parameters": {
                  "id": 2146,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2145,
                      "mutability": "mutable",
                      "name": "_remover",
                      "nodeType": "VariableDeclaration",
                      "scope": 2156,
                      "src": "3111:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2144,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3111:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3110:18:3"
                },
                "returnParameters": {
                  "id": 2150,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3155:0:3"
                },
                "scope": 3041,
                "src": "3082:117:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7254
                ],
                "body": {
                  "id": 2170,
                  "nodeType": "Block",
                  "src": "3272:59:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2167,
                            "name": "newOrchestrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2158,
                            "src": "3308:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 2164,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1967,
                            "src": "3282:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          },
                          "id": 2166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferOwnership",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7165,
                          "src": "3282:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address) external"
                          }
                        },
                        "id": 2168,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3282:42:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2169,
                      "nodeType": "ExpressionStatement",
                      "src": "3282:42:3"
                    }
                  ]
                },
                "functionSelector": "9e6371ba",
                "id": 2171,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2162,
                    "modifierName": {
                      "id": 2161,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "3264:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3264:7:3"
                  }
                ],
                "name": "retire",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2160,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3255:8:3"
                },
                "parameters": {
                  "id": 2159,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2158,
                      "mutability": "mutable",
                      "name": "newOrchestrator",
                      "nodeType": "VariableDeclaration",
                      "scope": 2171,
                      "src": "3221:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2157,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3221:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3220:25:3"
                },
                "returnParameters": {
                  "id": 2163,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3272:0:3"
                },
                "scope": 3041,
                "src": "3205:126:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7263
                ],
                "body": {
                  "id": 2202,
                  "nodeType": "Block",
                  "src": "3462:124:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 2190,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1967,
                                    "src": "3519:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                      "typeString": "contract IMateriaFactory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                      "typeString": "contract IMateriaFactory"
                                    }
                                  ],
                                  "id": 2189,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3511:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2188,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3511:7:3",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2191,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3511:16:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 2194,
                                    "name": "bridgeToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1975,
                                    "src": "3537:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$6105",
                                      "typeString": "contract IERC20"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$6105",
                                      "typeString": "contract IERC20"
                                    }
                                  ],
                                  "id": 2193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3529:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2192,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3529:7:3",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3529:20:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 2196,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2173,
                                "src": "3551:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 2186,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "3488:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 2187,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "3488:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 2197,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3488:69:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 2198,
                            "name": "materiaFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2175,
                            "src": "3559:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 2199,
                            "name": "swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2177,
                            "src": "3571:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 2183,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1967,
                            "src": "3472:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          },
                          "id": 2185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "setFees",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7174,
                          "src": "3472:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256,uint256) external"
                          }
                        },
                        "id": 2200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3472:107:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2201,
                      "nodeType": "ExpressionStatement",
                      "src": "3472:107:3"
                    }
                  ]
                },
                "functionSelector": "11f38472",
                "id": 2203,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2181,
                    "modifierName": {
                      "id": 2180,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "3454:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3454:7:3"
                  }
                ],
                "name": "setFees",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2179,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3445:8:3"
                },
                "parameters": {
                  "id": 2178,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2173,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2203,
                      "src": "3363:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2172,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3363:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2175,
                      "mutability": "mutable",
                      "name": "materiaFee",
                      "nodeType": "VariableDeclaration",
                      "scope": 2203,
                      "src": "3386:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2174,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3386:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2177,
                      "mutability": "mutable",
                      "name": "swapFee",
                      "nodeType": "VariableDeclaration",
                      "scope": 2203,
                      "src": "3414:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2176,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3414:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3353:82:3"
                },
                "returnParameters": {
                  "id": 2182,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3462:0:3"
                },
                "scope": 3041,
                "src": "3337:249:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7270
                ],
                "body": {
                  "id": 2225,
                  "nodeType": "Block",
                  "src": "3679:101:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2216,
                            "name": "materiaFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2205,
                            "src": "3718:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 2213,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1967,
                            "src": "3689:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          },
                          "id": 2215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "setDefaultMateriaFee",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7155,
                          "src": "3689:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 2217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3689:40:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2218,
                      "nodeType": "ExpressionStatement",
                      "src": "3689:40:3"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2222,
                            "name": "swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2207,
                            "src": "3765:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 2219,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1967,
                            "src": "3739:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          },
                          "id": 2221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "setDefaultSwapFee",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7160,
                          "src": "3739:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 2223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3739:34:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2224,
                      "nodeType": "ExpressionStatement",
                      "src": "3739:34:3"
                    }
                  ]
                },
                "functionSelector": "b9bdb4ef",
                "id": 2226,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2211,
                    "modifierName": {
                      "id": 2210,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "3671:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3671:7:3"
                  }
                ],
                "name": "setDefaultFees",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2209,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3662:8:3"
                },
                "parameters": {
                  "id": 2208,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2205,
                      "mutability": "mutable",
                      "name": "materiaFee",
                      "nodeType": "VariableDeclaration",
                      "scope": 2226,
                      "src": "3616:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2204,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3616:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2207,
                      "mutability": "mutable",
                      "name": "swapFee",
                      "nodeType": "VariableDeclaration",
                      "scope": 2226,
                      "src": "3636:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2206,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3636:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3615:37:3"
                },
                "returnParameters": {
                  "id": 2212,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3679:0:3"
                },
                "scope": 3041,
                "src": "3592:188:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7275
                ],
                "body": {
                  "id": 2240,
                  "nodeType": "Block",
                  "src": "3845:40:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2237,
                            "name": "feeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2228,
                            "src": "3872:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 2234,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1967,
                            "src": "3855:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          },
                          "id": 2236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "setFeeTo",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7150,
                          "src": "3855:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address) external"
                          }
                        },
                        "id": 2238,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3855:23:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2239,
                      "nodeType": "ExpressionStatement",
                      "src": "3855:23:3"
                    }
                  ]
                },
                "functionSelector": "f46901ed",
                "id": 2241,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2232,
                    "modifierName": {
                      "id": 2231,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "3837:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3837:7:3"
                  }
                ],
                "name": "setFeeTo",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2230,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3828:8:3"
                },
                "parameters": {
                  "id": 2229,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2228,
                      "mutability": "mutable",
                      "name": "feeTo",
                      "nodeType": "VariableDeclaration",
                      "scope": 2241,
                      "src": "3804:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2227,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3804:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3803:15:3"
                },
                "returnParameters": {
                  "id": 2233,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3845:0:3"
                },
                "scope": 3041,
                "src": "3786:99:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7284
                ],
                "body": {
                  "id": 2261,
                  "nodeType": "Block",
                  "src": "4047:69:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2256,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2243,
                            "src": "4085:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 2257,
                            "name": "receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2247,
                            "src": "4092:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 2258,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2245,
                            "src": "4102:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 2253,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "4057:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "4057:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 2259,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4057:52:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2260,
                      "nodeType": "ExpressionStatement",
                      "src": "4057:52:3"
                    }
                  ]
                },
                "functionSelector": "b6ec79fe",
                "id": 2262,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "id": 2251,
                    "modifierName": {
                      "id": 2250,
                      "name": "onlyDFO",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2266,
                      "src": "4039:7:3"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "4039:7:3"
                  }
                ],
                "name": "getCrumbs",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2249,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "4030:8:3"
                },
                "parameters": {
                  "id": 2248,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2243,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2262,
                      "src": "3951:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2242,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3951:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2245,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 2262,
                      "src": "3974:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2244,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3974:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2247,
                      "mutability": "mutable",
                      "name": "receiver",
                      "nodeType": "VariableDeclaration",
                      "scope": 2262,
                      "src": "3998:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2246,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3998:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3941:79:3"
                },
                "returnParameters": {
                  "id": 2252,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4047:0:3"
                },
                "scope": 3041,
                "src": "3923:193:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2265,
                  "nodeType": "Block",
                  "src": "4141:189:3",
                  "statements": [
                    {
                      "id": 2264,
                      "nodeType": "PlaceholderStatement",
                      "src": "4322:1:3"
                    }
                  ]
                },
                "id": 2266,
                "name": "onlyDFO",
                "nodeType": "ModifierDefinition",
                "parameters": {
                  "id": 2263,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4138:2:3"
                },
                "src": "4122:208:3",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 2280,
                  "nodeType": "Block",
                  "src": "4363:107:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2276,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2270,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "4381:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4381:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 2274,
                                  "name": "erc20Wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1971,
                                  "src": "4403:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                    "typeString": "contract IERC20WrapperV1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                    "typeString": "contract IERC20WrapperV1"
                                  }
                                ],
                                "id": 2273,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4395:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2272,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4395:7:3",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4395:21:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4381:35:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4f6e6c79204574684974656d2063616e2073656e642045544820746f207468697320636f6e7472616374",
                            "id": 2277,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4418:44:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bfba747f79fc6513ffe188ccc22fa11e3c9265fac2b89afd8d55d0f493b321cb",
                              "typeString": "literal_string \"Only EthItem can send ETH to this contract\""
                            },
                            "value": "Only EthItem can send ETH to this contract"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_bfba747f79fc6513ffe188ccc22fa11e3c9265fac2b89afd8d55d0f493b321cb",
                              "typeString": "literal_string \"Only EthItem can send ETH to this contract\""
                            }
                          ],
                          "id": 2269,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "4373:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2278,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4373:90:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2279,
                      "nodeType": "ExpressionStatement",
                      "src": "4373:90:3"
                    }
                  ]
                },
                "id": 2281,
                "implemented": true,
                "kind": "receive",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2267,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4343:2:3"
                },
                "returnParameters": {
                  "id": 2268,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4363:0:3"
                },
                "scope": 3041,
                "src": "4336:134:3",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5952
                ],
                "body": {
                  "id": 2348,
                  "nodeType": "Block",
                  "src": "5047:441:3",
                  "statements": [
                    {
                      "assignments": [
                        2299,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2299,
                          "mutability": "mutable",
                          "name": "operation",
                          "nodeType": "VariableDeclaration",
                          "scope": 2348,
                          "src": "5058:17:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2298,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5058:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 2309,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 2302,
                            "name": "payload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2292,
                            "src": "5092:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          {
                            "components": [
                              {
                                "id": 2304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5102:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 2303,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5102:7:3",
                                  "typeDescriptions": {}
                                }
                              },
                              {
                                "id": 2306,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5111:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 2305,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5111:5:3",
                                  "typeDescriptions": {}
                                }
                              }
                            ],
                            "id": 2307,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5101:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                              "typeString": "tuple(type(uint256),type(bytes storage pointer))"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            },
                            {
                              "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                              "typeString": "tuple(type(uint256),type(bytes storage pointer))"
                            }
                          ],
                          "expression": {
                            "id": 2300,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "5081:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "decode",
                          "nodeType": "MemberAccess",
                          "src": "5081:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                            "typeString": "function () pure"
                          }
                        },
                        "id": 2308,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5081:37:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(uint256,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5057:61:3"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2312,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2310,
                          "name": "operation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2299,
                          "src": "5132:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "31",
                          "id": 2311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5145:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "5132:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2328,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2320,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2318,
                                  "name": "operation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2299,
                                  "src": "5239:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 2319,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5252:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "5239:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2323,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2321,
                                  "name": "operation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2299,
                                  "src": "5257:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "33",
                                  "id": 2322,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5270:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_3_by_1",
                                    "typeString": "int_const 3"
                                  },
                                  "value": "3"
                                },
                                "src": "5257:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5239:32:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2325,
                                "name": "operation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2299,
                                "src": "5275:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "34",
                                "id": 2326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5288:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "5275:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "5239:50:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2331,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2329,
                              "name": "operation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2299,
                              "src": "5293:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "35",
                              "id": 2330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5306:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_5_by_1",
                                "typeString": "int_const 5"
                              },
                              "value": "5"
                            },
                            "src": "5293:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5239:68:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2341,
                          "nodeType": "Block",
                          "src": "5400:33:3",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2338,
                                  "name": "revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    4294967277,
                                    4294967277
                                  ],
                                  "referencedDeclaration": 4294967277,
                                  "src": "5414:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 2339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5414:8:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2340,
                              "nodeType": "ExpressionStatement",
                              "src": "5414:8:3"
                            }
                          ]
                        },
                        "id": 2342,
                        "nodeType": "IfStatement",
                        "src": "5235:198:3",
                        "trueBody": {
                          "id": 2337,
                          "nodeType": "Block",
                          "src": "5309:85:3",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2334,
                                    "name": "swapper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1957,
                                    "src": "5364:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2333,
                                  "name": "_delegate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1945,
                                  "src": "5354:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 2335,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5354:18:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2336,
                              "nodeType": "ExpressionStatement",
                              "src": "5354:18:3"
                            }
                          ]
                        }
                      },
                      "id": 2343,
                      "nodeType": "IfStatement",
                      "src": "5128:305:3",
                      "trueBody": {
                        "id": 2317,
                        "nodeType": "Block",
                        "src": "5148:81:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 2314,
                                  "name": "liquidityAdder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1960,
                                  "src": "5203:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2313,
                                "name": "_delegate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1945,
                                "src": "5193:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address)"
                                }
                              },
                              "id": 2315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5193:25:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2316,
                            "nodeType": "ExpressionStatement",
                            "src": "5193:25:3"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "expression": {
                          "expression": {
                            "id": 2344,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "5450:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MateriaOrchestrator_$3041",
                              "typeString": "contract MateriaOrchestrator"
                            }
                          },
                          "id": 2345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "onERC1155Received",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2349,
                          "src": "5450:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                            "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                          }
                        },
                        "id": 2346,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "selector",
                        "nodeType": "MemberAccess",
                        "src": "5450:31:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "functionReturnParameters": 2297,
                      "id": 2347,
                      "nodeType": "Return",
                      "src": "5443:38:3"
                    }
                  ]
                },
                "documentation": {
                  "id": 2282,
                  "nodeType": "StructuredDocumentation",
                  "src": "4476:397:3",
                  "text": " As ERC1155 receiver Materia Orchestrator implements onERC1155Received and onERC1155BatchReceived.\n onERC1155Received exposes the delegate call to the Liquidity Adder, Remover Liquidity and to the Swapper contracts.\n Calling with a callback you will be able to specify the operation needed.\n onERC1155BatchReceived will be implemented with batch/lego operation."
                },
                "functionSelector": "f23a6e61",
                "id": 2349,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "onERC1155Received",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2294,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "5021:8:3"
                },
                "parameters": {
                  "id": 2293,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2284,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2349,
                      "src": "4915:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2283,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4915:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2286,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2349,
                      "src": "4932:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2285,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4932:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2288,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2349,
                      "src": "4949:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2287,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4949:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2290,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2349,
                      "src": "4966:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2289,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4966:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2292,
                      "mutability": "mutable",
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 2349,
                      "src": "4983:22:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2291,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4983:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4905:106:3"
                },
                "returnParameters": {
                  "id": 2297,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2296,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2349,
                      "src": "5039:6:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 2295,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "5039:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5038:8:3"
                },
                "scope": 3041,
                "src": "4879:609:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5970
                ],
                "body": {
                  "id": 2370,
                  "nodeType": "Block",
                  "src": "5686:25:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2367,
                          "name": "revert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967277,
                            4294967277
                          ],
                          "referencedDeclaration": 4294967277,
                          "src": "5696:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                            "typeString": "function () pure"
                          }
                        },
                        "id": 2368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5696:8:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2369,
                      "nodeType": "ExpressionStatement",
                      "src": "5696:8:3"
                    }
                  ]
                },
                "functionSelector": "bc197c81",
                "id": 2371,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "onERC1155BatchReceived",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2363,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "5660:8:3"
                },
                "parameters": {
                  "id": 2362,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2351,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2371,
                      "src": "5535:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2350,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5535:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2353,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2371,
                      "src": "5552:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2352,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5552:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2356,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2371,
                      "src": "5569:18:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2354,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5569:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2355,
                        "nodeType": "ArrayTypeName",
                        "src": "5569:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2359,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2371,
                      "src": "5597:18:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2357,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5597:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2358,
                        "nodeType": "ArrayTypeName",
                        "src": "5597:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2361,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2371,
                      "src": "5625:14:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2360,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5625:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5525:120:3"
                },
                "returnParameters": {
                  "id": 2366,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2365,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2371,
                      "src": "5678:6:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 2364,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "5678:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5677:8:3"
                },
                "scope": 3041,
                "src": "5494:217:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7351
                ],
                "body": {
                  "id": 2400,
                  "nodeType": "Block",
                  "src": "6364:42:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2397,
                            "name": "liquidityAdder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1960,
                            "src": "6384:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2396,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "6374:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6374:25:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2399,
                      "nodeType": "ExpressionStatement",
                      "src": "6374:25:3"
                    }
                  ]
                },
                "documentation": {
                  "id": 2372,
                  "nodeType": "StructuredDocumentation",
                  "src": "5717:252:3",
                  "text": " Liquidity adding methods are exposed to call the Liquidity Adder contract via a secure channel such as the Orchestrator.\n Both addLiquidity and addLiquidityETH methods are provided. addLiquidity can be used for ERC20 and ITEMs."
                },
                "functionSelector": "9187aaca",
                "id": 2401,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "addLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2388,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "6235:8:3"
                },
                "parameters": {
                  "id": 2387,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2374,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "6006:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2373,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6006:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2376,
                      "mutability": "mutable",
                      "name": "tokenAmountDesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "6029:26:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2375,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6029:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2378,
                      "mutability": "mutable",
                      "name": "bridgeAmountDesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "6065:27:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2377,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6065:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2380,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "6102:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2379,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6102:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2382,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "6134:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2381,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6134:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2384,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "6167:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2383,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6167:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2386,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "6187:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2385,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6187:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5996:213:3"
                },
                "returnParameters": {
                  "id": 2395,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2390,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "6274:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2389,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6274:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2392,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "6303:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2391,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6303:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2394,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "6332:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2393,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6332:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6260:99:3"
                },
                "scope": 3041,
                "src": "5975:431:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7370
                ],
                "body": {
                  "id": 2425,
                  "nodeType": "Block",
                  "src": "6765:42:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2422,
                            "name": "liquidityAdder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1960,
                            "src": "6785:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2421,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "6775:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6775:25:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2424,
                      "nodeType": "ExpressionStatement",
                      "src": "6775:25:3"
                    }
                  ]
                },
                "functionSelector": "bb8a88bb",
                "id": 2426,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "addLiquidityETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2413,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "6630:8:3"
                },
                "parameters": {
                  "id": 2412,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2403,
                      "mutability": "mutable",
                      "name": "bridgeAmountDesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 2426,
                      "src": "6446:27:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2402,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6446:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2405,
                      "mutability": "mutable",
                      "name": "EthAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2426,
                      "src": "6483:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2404,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6483:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2407,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2426,
                      "src": "6513:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2406,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6513:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2409,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2426,
                      "src": "6546:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2408,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6546:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2411,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2426,
                      "src": "6566:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2410,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6566:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6436:152:3"
                },
                "returnParameters": {
                  "id": 2420,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2415,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 2426,
                      "src": "6669:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2414,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6669:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2417,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "scope": 2426,
                      "src": "6702:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2416,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6702:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2419,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 2426,
                      "src": "6733:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2418,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6733:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6655:105:3"
                },
                "scope": 3041,
                "src": "6412:395:3",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  7385
                ],
                "body": {
                  "id": 2447,
                  "nodeType": "Block",
                  "src": "7316:44:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2444,
                            "name": "liquidityRemover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1963,
                            "src": "7336:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2443,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "7326:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2445,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7326:27:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2446,
                      "nodeType": "ExpressionStatement",
                      "src": "7326:27:3"
                    }
                  ]
                },
                "documentation": {
                  "id": 2427,
                  "nodeType": "StructuredDocumentation",
                  "src": "6813:289:3",
                  "text": " Liquidity removing methods are exposed to call the Liquidity Remover contract via a secure channel such as the Orchestrator.\n The following methods are provided:\n removeLiquidity, removeLiquidityETH, removeLiquidityWithPermit and removeLiquidityETHWithPermit"
                },
                "functionSelector": "96c92f5e",
                "id": 2448,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2441,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "7307:8:3"
                },
                "parameters": {
                  "id": 2440,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2429,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2448,
                      "src": "7142:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2428,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7142:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2431,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 2448,
                      "src": "7165:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2430,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7165:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2433,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2448,
                      "src": "7192:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2432,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7192:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2435,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2448,
                      "src": "7224:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2434,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7224:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2437,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2448,
                      "src": "7257:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2436,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7257:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2439,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2448,
                      "src": "7277:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2438,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7277:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7132:167:3"
                },
                "returnParameters": {
                  "id": 2442,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "7316:0:3"
                },
                "scope": 3041,
                "src": "7108:252:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7398
                ],
                "body": {
                  "id": 2466,
                  "nodeType": "Block",
                  "src": "7552:44:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2463,
                            "name": "liquidityRemover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1963,
                            "src": "7572:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2462,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "7562:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2464,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7562:27:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2465,
                      "nodeType": "ExpressionStatement",
                      "src": "7562:27:3"
                    }
                  ]
                },
                "functionSelector": "ee1fae3c",
                "id": 2467,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2460,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "7543:8:3"
                },
                "parameters": {
                  "id": 2459,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2450,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 2467,
                      "src": "7403:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2449,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7403:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2452,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2467,
                      "src": "7430:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2451,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7430:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2454,
                      "mutability": "mutable",
                      "name": "EthAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2467,
                      "src": "7463:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2453,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7463:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2456,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2467,
                      "src": "7493:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2455,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7493:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2458,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2467,
                      "src": "7513:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2457,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7513:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7393:142:3"
                },
                "returnParameters": {
                  "id": 2461,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "7552:0:3"
                },
                "scope": 3041,
                "src": "7366:230:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7421
                ],
                "body": {
                  "id": 2495,
                  "nodeType": "Block",
                  "src": "7900:44:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2492,
                            "name": "liquidityRemover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1963,
                            "src": "7920:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2491,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "7910:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7910:27:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2494,
                      "nodeType": "ExpressionStatement",
                      "src": "7910:27:3"
                    }
                  ]
                },
                "functionSelector": "104870fd",
                "id": 2496,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityWithPermit",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2489,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "7891:8:3"
                },
                "parameters": {
                  "id": 2488,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2469,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2496,
                      "src": "7646:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2468,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7646:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2471,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 2496,
                      "src": "7669:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2470,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7669:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2473,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2496,
                      "src": "7696:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2472,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7696:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2475,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2496,
                      "src": "7728:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2474,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7728:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2477,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2496,
                      "src": "7761:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2476,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7761:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2479,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2496,
                      "src": "7781:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2478,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7781:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2481,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 2496,
                      "src": "7807:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2480,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "7807:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2483,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 2496,
                      "src": "7832:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2482,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "7832:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2485,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 2496,
                      "src": "7849:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2484,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7849:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2487,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 2496,
                      "src": "7868:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2486,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7868:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7636:247:3"
                },
                "returnParameters": {
                  "id": 2490,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "7900:0:3"
                },
                "scope": 3041,
                "src": "7602:342:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7442
                ],
                "body": {
                  "id": 2522,
                  "nodeType": "Block",
                  "src": "8228:44:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2519,
                            "name": "liquidityRemover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1963,
                            "src": "8248:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2518,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "8238:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8238:27:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2521,
                      "nodeType": "ExpressionStatement",
                      "src": "8238:27:3"
                    }
                  ]
                },
                "functionSelector": "678700e0",
                "id": 2523,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHWithPermit",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2516,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "8219:8:3"
                },
                "parameters": {
                  "id": 2515,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2498,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "7997:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2497,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7997:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2500,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "8024:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2499,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8024:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2502,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "8056:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2501,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8056:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2504,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "8089:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2503,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8089:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2506,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "8109:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2505,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8109:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2508,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "8135:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2507,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "8135:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2510,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "8160:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2509,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "8160:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2512,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "8177:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2511,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8177:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2514,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "8196:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2513,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8196:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7987:224:3"
                },
                "returnParameters": {
                  "id": 2517,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "8228:0:3"
                },
                "scope": 3041,
                "src": "7950:322:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7457
                ],
                "body": {
                  "id": 2543,
                  "nodeType": "Block",
                  "src": "8499:44:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2540,
                            "name": "liquidityRemover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1963,
                            "src": "8519:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2539,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "8509:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8509:27:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2542,
                      "nodeType": "ExpressionStatement",
                      "src": "8509:27:3"
                    }
                  ]
                },
                "functionSelector": "3d0c2a34",
                "id": 2544,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityAndUnwrap",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2537,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "8490:8:3"
                },
                "parameters": {
                  "id": 2536,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2525,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2544,
                      "src": "8325:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2524,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8325:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2527,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 2544,
                      "src": "8348:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2526,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8348:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2529,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2544,
                      "src": "8375:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2528,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8375:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2531,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2544,
                      "src": "8407:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2530,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8407:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2533,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2544,
                      "src": "8440:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2532,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8440:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2535,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2544,
                      "src": "8460:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2534,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8460:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "8315:167:3"
                },
                "returnParameters": {
                  "id": 2538,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "8499:0:3"
                },
                "scope": 3041,
                "src": "8282:261:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7480
                ],
                "body": {
                  "id": 2572,
                  "nodeType": "Block",
                  "src": "8856:44:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2569,
                            "name": "liquidityRemover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1963,
                            "src": "8876:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2568,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "8866:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2570,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8866:27:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2571,
                      "nodeType": "ExpressionStatement",
                      "src": "8866:27:3"
                    }
                  ]
                },
                "functionSelector": "5909889d",
                "id": 2573,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityWithPermitAndUnwrap",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2566,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "8847:8:3"
                },
                "parameters": {
                  "id": 2565,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2546,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2573,
                      "src": "8602:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2545,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8602:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2548,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 2573,
                      "src": "8625:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2547,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8625:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2550,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2573,
                      "src": "8652:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2549,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8652:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2552,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2573,
                      "src": "8684:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2551,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8684:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2554,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2573,
                      "src": "8717:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2553,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8717:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2556,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2573,
                      "src": "8737:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2555,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8737:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2558,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 2573,
                      "src": "8763:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2557,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "8763:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2560,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 2573,
                      "src": "8788:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2559,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "8788:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2562,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 2573,
                      "src": "8805:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2561,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8805:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2564,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 2573,
                      "src": "8824:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2563,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8824:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "8592:247:3"
                },
                "returnParameters": {
                  "id": 2567,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "8856:0:3"
                },
                "scope": 3041,
                "src": "8549:351:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7497
                ],
                "body": {
                  "id": 2596,
                  "nodeType": "Block",
                  "src": "9463:35:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2593,
                            "name": "swapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1957,
                            "src": "9483:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2592,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "9473:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2594,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9473:18:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2595,
                      "nodeType": "ExpressionStatement",
                      "src": "9473:18:3"
                    }
                  ]
                },
                "documentation": {
                  "id": 2574,
                  "nodeType": "StructuredDocumentation",
                  "src": "8906:328:3",
                  "text": " Swapping methods are exposed to call the Swapper Operator contract via a secure channel such as the Orchestrator.\n The following methods are provided:\n swapExactTokensForTokens, swapTokensForExactTokens, swapExactETHForTokens, swapTokensForExactETH, swapExactTokensForETH and swapETHForExactTokens"
                },
                "functionSelector": "38ed1739",
                "id": 2597,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2587,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "9419:8:3"
                },
                "parameters": {
                  "id": 2586,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2576,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 2597,
                      "src": "9282:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2575,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9282:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2578,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2597,
                      "src": "9308:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2577,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9308:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2581,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 2597,
                      "src": "9338:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2579,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9338:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2580,
                        "nodeType": "ArrayTypeName",
                        "src": "9338:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2583,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2597,
                      "src": "9369:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2582,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9369:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2585,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2597,
                      "src": "9389:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2584,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9389:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "9272:139:3"
                },
                "returnParameters": {
                  "id": 2591,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2590,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 2597,
                      "src": "9437:24:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2588,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9437:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2589,
                        "nodeType": "ArrayTypeName",
                        "src": "9437:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "9436:26:3"
                },
                "scope": 3041,
                "src": "9239:259:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7514
                ],
                "body": {
                  "id": 2619,
                  "nodeType": "Block",
                  "src": "9728:35:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2616,
                            "name": "swapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1957,
                            "src": "9748:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2615,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "9738:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2617,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9738:18:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2618,
                      "nodeType": "ExpressionStatement",
                      "src": "9738:18:3"
                    }
                  ]
                },
                "functionSelector": "8803dbee",
                "id": 2620,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapTokensForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2610,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "9684:8:3"
                },
                "parameters": {
                  "id": 2609,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2599,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2620,
                      "src": "9547:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2598,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9547:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2601,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 2620,
                      "src": "9574:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2600,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9574:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2604,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 2620,
                      "src": "9603:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2602,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9603:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2603,
                        "nodeType": "ArrayTypeName",
                        "src": "9603:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2606,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2620,
                      "src": "9634:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2605,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9634:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2608,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2620,
                      "src": "9654:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2607,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9654:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "9537:139:3"
                },
                "returnParameters": {
                  "id": 2614,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2613,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 2620,
                      "src": "9702:24:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2611,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9702:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2612,
                        "nodeType": "ArrayTypeName",
                        "src": "9702:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "9701:26:3"
                },
                "scope": 3041,
                "src": "9504:259:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7526
                ],
                "body": {
                  "id": 2637,
                  "nodeType": "Block",
                  "src": "9937:35:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2634,
                            "name": "swapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1957,
                            "src": "9957:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2633,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "9947:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9947:18:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2636,
                      "nodeType": "ExpressionStatement",
                      "src": "9947:18:3"
                    }
                  ]
                },
                "functionSelector": "7ff36ab5",
                "id": 2638,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactETHForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2631,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "9928:8:3"
                },
                "parameters": {
                  "id": 2630,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2622,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2638,
                      "src": "9809:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2621,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9809:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2625,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 2638,
                      "src": "9839:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2623,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9839:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2624,
                        "nodeType": "ArrayTypeName",
                        "src": "9839:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2627,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2638,
                      "src": "9870:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2626,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9870:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2629,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2638,
                      "src": "9890:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2628,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9890:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "9799:113:3"
                },
                "returnParameters": {
                  "id": 2632,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "9937:0:3"
                },
                "scope": 3041,
                "src": "9769:203:3",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7540
                ],
                "body": {
                  "id": 2657,
                  "nodeType": "Block",
                  "src": "10164:35:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2654,
                            "name": "swapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1957,
                            "src": "10184:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2653,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "10174:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2655,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10174:18:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2656,
                      "nodeType": "ExpressionStatement",
                      "src": "10174:18:3"
                    }
                  ]
                },
                "functionSelector": "4a25d94a",
                "id": 2658,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapTokensForExactETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2651,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "10155:8:3"
                },
                "parameters": {
                  "id": 2650,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2640,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2658,
                      "src": "10018:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2639,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10018:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2642,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 2658,
                      "src": "10045:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2641,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10045:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2645,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 2658,
                      "src": "10074:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2643,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10074:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2644,
                        "nodeType": "ArrayTypeName",
                        "src": "10074:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2647,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2658,
                      "src": "10105:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2646,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10105:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2649,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2658,
                      "src": "10125:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2648,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10125:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "10008:139:3"
                },
                "returnParameters": {
                  "id": 2652,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "10164:0:3"
                },
                "scope": 3041,
                "src": "9978:221:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7554
                ],
                "body": {
                  "id": 2677,
                  "nodeType": "Block",
                  "src": "10391:35:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2674,
                            "name": "swapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1957,
                            "src": "10411:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2673,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "10401:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10401:18:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2676,
                      "nodeType": "ExpressionStatement",
                      "src": "10401:18:3"
                    }
                  ]
                },
                "functionSelector": "18cbafe5",
                "id": 2678,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2671,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "10382:8:3"
                },
                "parameters": {
                  "id": 2670,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2660,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 2678,
                      "src": "10245:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2659,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10245:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2662,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 2678,
                      "src": "10271:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2661,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10271:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2665,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 2678,
                      "src": "10301:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2663,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10301:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2664,
                        "nodeType": "ArrayTypeName",
                        "src": "10301:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2667,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2678,
                      "src": "10332:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2666,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10332:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2669,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2678,
                      "src": "10352:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2668,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10352:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "10235:139:3"
                },
                "returnParameters": {
                  "id": 2672,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "10391:0:3"
                },
                "scope": 3041,
                "src": "10205:221:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7566
                ],
                "body": {
                  "id": 2695,
                  "nodeType": "Block",
                  "src": "10597:35:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2692,
                            "name": "swapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1957,
                            "src": "10617:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2691,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1945,
                          "src": "10607:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10607:18:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2694,
                      "nodeType": "ExpressionStatement",
                      "src": "10607:18:3"
                    }
                  ]
                },
                "functionSelector": "fb3bdb41",
                "id": 2696,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapETHForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2689,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "10588:8:3"
                },
                "parameters": {
                  "id": 2688,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2680,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2696,
                      "src": "10472:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2679,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10472:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2683,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 2696,
                      "src": "10499:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2681,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10499:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2682,
                        "nodeType": "ArrayTypeName",
                        "src": "10499:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2685,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2696,
                      "src": "10530:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2684,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10530:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2687,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2696,
                      "src": "10550:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2686,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10550:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "10462:110:3"
                },
                "returnParameters": {
                  "id": 2690,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "10597:0:3"
                },
                "scope": 3041,
                "src": "10432:200:3",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7620
                ],
                "body": {
                  "id": 2716,
                  "nodeType": "Block",
                  "src": "10937:73:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2711,
                            "name": "amountA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2699,
                            "src": "10975:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 2712,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2701,
                            "src": "10984:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 2713,
                            "name": "reserveB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2703,
                            "src": "10994:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 2709,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "10954:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 2710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "quote",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8406,
                          "src": "10954:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10954:49:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2708,
                      "id": 2715,
                      "nodeType": "Return",
                      "src": "10947:56:3"
                    }
                  ]
                },
                "documentation": {
                  "id": 2697,
                  "nodeType": "StructuredDocumentation",
                  "src": "10638:149:3",
                  "text": " Methods are exposed for the UI to retrive useful information such as quote, getAmountOut, getAmountIn, getAmountsOut, getAmountsIn"
                },
                "functionSelector": "ad615dec",
                "id": 2717,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "quote",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2705,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "10902:8:3"
                },
                "parameters": {
                  "id": 2704,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2699,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "scope": 2717,
                      "src": "10816:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2698,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10816:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2701,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "scope": 2717,
                      "src": "10841:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2700,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10841:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2703,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "scope": 2717,
                      "src": "10867:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2702,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10867:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "10806:83:3"
                },
                "returnParameters": {
                  "id": 2708,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2707,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "scope": 2717,
                      "src": "10920:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2706,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10920:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "10919:17:3"
                },
                "scope": 3041,
                "src": "10792:218:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7631
                ],
                "body": {
                  "id": 2736,
                  "nodeType": "Block",
                  "src": "11174:84:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2731,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2719,
                            "src": "11219:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 2732,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2721,
                            "src": "11229:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 2733,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2723,
                            "src": "11240:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 2729,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "11191:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 2730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountOut",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8466,
                          "src": "11191:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2734,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11191:60:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2728,
                      "id": 2735,
                      "nodeType": "Return",
                      "src": "11184:67:3"
                    }
                  ]
                },
                "functionSelector": "054d50d4",
                "id": 2737,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountOut",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2725,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "11137:8:3"
                },
                "parameters": {
                  "id": 2724,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2719,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 2737,
                      "src": "11047:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2718,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11047:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2721,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 2737,
                      "src": "11073:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2720,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11073:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2723,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2737,
                      "src": "11100:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2722,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11100:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "11037:87:3"
                },
                "returnParameters": {
                  "id": 2728,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2727,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2737,
                      "src": "11155:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2726,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11155:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "11154:19:3"
                },
                "scope": 3041,
                "src": "11016:242:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7642
                ],
                "body": {
                  "id": 2756,
                  "nodeType": "Block",
                  "src": "11421:84:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2751,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2739,
                            "src": "11465:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 2752,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2741,
                            "src": "11476:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 2753,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2743,
                            "src": "11487:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 2749,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "11438:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 2750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountIn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8526,
                          "src": "11438:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2754,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11438:60:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2748,
                      "id": 2755,
                      "nodeType": "Return",
                      "src": "11431:67:3"
                    }
                  ]
                },
                "functionSelector": "85f8c259",
                "id": 2757,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountIn",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2745,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "11385:8:3"
                },
                "parameters": {
                  "id": 2744,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2739,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2757,
                      "src": "11294:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2738,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11294:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2741,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 2757,
                      "src": "11321:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2740,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11321:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2743,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2757,
                      "src": "11348:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2742,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11348:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "11284:88:3"
                },
                "returnParameters": {
                  "id": 2748,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2747,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 2757,
                      "src": "11403:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2746,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11403:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "11402:18:3"
                },
                "scope": 3041,
                "src": "11264:241:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7653
                ],
                "body": {
                  "id": 2779,
                  "nodeType": "Block",
                  "src": "11667:86:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 2773,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1967,
                                "src": "11721:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                  "typeString": "contract IMateriaFactory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                  "typeString": "contract IMateriaFactory"
                                }
                              ],
                              "id": 2772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11713:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2771,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11713:7:3",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11713:16:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 2775,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2759,
                            "src": "11731:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 2776,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2762,
                            "src": "11741:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "expression": {
                            "id": 2769,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "11684:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 2770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountsOut",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8607,
                          "src": "11684:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                          }
                        },
                        "id": 2777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11684:62:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "functionReturnParameters": 2768,
                      "id": 2778,
                      "nodeType": "Return",
                      "src": "11677:69:3"
                    }
                  ]
                },
                "functionSelector": "d06ca61f",
                "id": 2780,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsOut",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2764,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "11611:8:3"
                },
                "parameters": {
                  "id": 2763,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2759,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 2780,
                      "src": "11534:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2758,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11534:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2762,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 2780,
                      "src": "11552:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2760,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11552:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2761,
                        "nodeType": "ArrayTypeName",
                        "src": "11552:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "11533:41:3"
                },
                "returnParameters": {
                  "id": 2768,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2767,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 2780,
                      "src": "11637:24:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2765,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11637:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2766,
                        "nodeType": "ArrayTypeName",
                        "src": "11637:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "11636:26:3"
                },
                "scope": 3041,
                "src": "11511:242:3",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7664
                ],
                "body": {
                  "id": 2802,
                  "nodeType": "Block",
                  "src": "11915:86:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 2796,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1967,
                                "src": "11968:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                  "typeString": "contract IMateriaFactory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                  "typeString": "contract IMateriaFactory"
                                }
                              ],
                              "id": 2795,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11960:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2794,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11960:7:3",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2797,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11960:16:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 2798,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2782,
                            "src": "11978:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 2799,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2785,
                            "src": "11989:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "expression": {
                            "id": 2792,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "11932:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 2793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountsIn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8692,
                          "src": "11932:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                          }
                        },
                        "id": 2800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11932:62:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "functionReturnParameters": 2791,
                      "id": 2801,
                      "nodeType": "Return",
                      "src": "11925:69:3"
                    }
                  ]
                },
                "functionSelector": "1f00ca74",
                "id": 2803,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsIn",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2787,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "11859:8:3"
                },
                "parameters": {
                  "id": 2786,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2782,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2803,
                      "src": "11781:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2781,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11781:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2785,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 2803,
                      "src": "11800:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2783,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11800:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2784,
                        "nodeType": "ArrayTypeName",
                        "src": "11800:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "11780:42:3"
                },
                "returnParameters": {
                  "id": 2791,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2790,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 2803,
                      "src": "11885:24:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2788,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11885:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2789,
                        "nodeType": "ArrayTypeName",
                        "src": "11885:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "11884:26:3"
                },
                "scope": 3041,
                "src": "11759:242:3",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7577
                ],
                "body": {
                  "id": 2863,
                  "nodeType": "Block",
                  "src": "12321:395:3",
                  "statements": [
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2816,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2806,
                          "src": "12335:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 2819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12352:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2818,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12344:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2817,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12344:7:3",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12344:10:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "12335:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 2861,
                        "nodeType": "Block",
                        "src": "12416:294:3",
                        "statements": [
                          {
                            "clauses": [
                              {
                                "block": {
                                  "id": 2848,
                                  "nodeType": "Block",
                                  "src": "12520:111:3",
                                  "statements": [
                                    {
                                      "expression": {
                                        "components": [
                                          {
                                            "id": 2839,
                                            "name": "mainInterface",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2837,
                                            "src": "12546:13:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 2840,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12561:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          },
                                          {
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "id": 2842,
                                                    "name": "token",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2806,
                                                    "src": "12598:5:3",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 2841,
                                                  "name": "IEthItemInteroperableInterface",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6250,
                                                  "src": "12567:30:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                                    "typeString": "type(contract IEthItemInteroperableInterface)"
                                                  }
                                                },
                                                "id": 2843,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "12567:37:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                                  "typeString": "contract IEthItemInteroperableInterface"
                                                }
                                              },
                                              "id": 2844,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "objectId",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6208,
                                              "src": "12567:46:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view external returns (uint256)"
                                              }
                                            },
                                            "id": 2845,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12567:48:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 2846,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "12545:71:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_address_$_t_bool_$_t_uint256_$",
                                          "typeString": "tuple(address,bool,uint256)"
                                        }
                                      },
                                      "functionReturnParameters": 2815,
                                      "id": 2847,
                                      "nodeType": "Return",
                                      "src": "12538:78:3"
                                    }
                                  ]
                                },
                                "errorName": "",
                                "id": 2849,
                                "nodeType": "TryCatchClause",
                                "parameters": {
                                  "id": 2838,
                                  "nodeType": "ParameterList",
                                  "parameters": [
                                    {
                                      "constant": false,
                                      "id": 2837,
                                      "mutability": "mutable",
                                      "name": "mainInterface",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 2849,
                                      "src": "12497:21:3",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "typeName": {
                                        "id": 2836,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12497:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "src": "12496:23:3"
                                },
                                "src": "12488:143:3"
                              },
                              {
                                "block": {
                                  "id": 2858,
                                  "nodeType": "Block",
                                  "src": "12638:62:3",
                                  "statements": [
                                    {
                                      "expression": {
                                        "components": [
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 2852,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12672:1:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "id": 2851,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "12664:7:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 2850,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "12664:7:3",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 2853,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12664:10:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "hexValue": "66616c7365",
                                            "id": 2854,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12676:5:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "false"
                                          },
                                          {
                                            "hexValue": "30",
                                            "id": 2855,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12683:1:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          }
                                        ],
                                        "id": 2856,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "12663:22:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_address_$_t_bool_$_t_rational_0_by_1_$",
                                          "typeString": "tuple(address,bool,int_const 0)"
                                        }
                                      },
                                      "functionReturnParameters": 2815,
                                      "id": 2857,
                                      "nodeType": "Return",
                                      "src": "12656:29:3"
                                    }
                                  ]
                                },
                                "errorName": "",
                                "id": 2859,
                                "nodeType": "TryCatchClause",
                                "src": "12632:68:3"
                              }
                            ],
                            "externalCall": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2832,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2806,
                                      "src": "12465:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2831,
                                    "name": "IEthItemInteroperableInterface",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6250,
                                    "src": "12434:30:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                      "typeString": "type(contract IEthItemInteroperableInterface)"
                                    }
                                  },
                                  "id": 2833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12434:37:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                    "typeString": "contract IEthItemInteroperableInterface"
                                  }
                                },
                                "id": 2834,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mainInterface",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6203,
                                "src": "12434:51:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 2835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12434:53:3",
                              "tryCall": true,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2860,
                            "nodeType": "TryStatement",
                            "src": "12430:270:3"
                          }
                        ]
                      },
                      "id": 2862,
                      "nodeType": "IfStatement",
                      "src": "12331:379:3",
                      "trueBody": {
                        "id": 2830,
                        "nodeType": "Block",
                        "src": "12356:54:3",
                        "statements": [
                          {
                            "expression": {
                              "components": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 2824,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12386:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2823,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12378:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2822,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12378:7:3",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2825,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12378:10:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "hexValue": "66616c7365",
                                  "id": 2826,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12390:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                {
                                  "hexValue": "30",
                                  "id": 2827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12397:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "id": 2828,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "12377:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_bool_$_t_rational_0_by_1_$",
                                "typeString": "tuple(address,bool,int_const 0)"
                              }
                            },
                            "functionReturnParameters": 2815,
                            "id": 2829,
                            "nodeType": "Return",
                            "src": "12370:29:3"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": {
                  "id": 2804,
                  "nodeType": "StructuredDocumentation",
                  "src": "12007:112:3",
                  "text": " isEthItem is a custom implementation to check whether a token is an ITEM or a standard ERC20."
                },
                "functionSelector": "47883c37",
                "id": 2864,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "isEthItem",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2808,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "12195:8:3"
                },
                "parameters": {
                  "id": 2807,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2806,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2864,
                      "src": "12144:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2805,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12144:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "12143:15:3"
                },
                "returnParameters": {
                  "id": 2815,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2810,
                      "mutability": "mutable",
                      "name": "collection",
                      "nodeType": "VariableDeclaration",
                      "scope": 2864,
                      "src": "12234:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2809,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12234:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2812,
                      "mutability": "mutable",
                      "name": "ethItem",
                      "nodeType": "VariableDeclaration",
                      "scope": 2864,
                      "src": "12266:12:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2811,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "12266:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2814,
                      "mutability": "mutable",
                      "name": "itemId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2864,
                      "src": "12292:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2813,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12292:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "12220:96:3"
                },
                "scope": 3041,
                "src": "12125:591:3",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7590
                ],
                "body": {
                  "id": 2937,
                  "nodeType": "Block",
                  "src": "13055:468:3",
                  "statements": [
                    {
                      "assignments": [
                        2880
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2880,
                          "mutability": "mutable",
                          "name": "ethItem",
                          "nodeType": "VariableDeclaration",
                          "scope": 2937,
                          "src": "13065:12:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 2879,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "13065:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 2881,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "13065:12:3"
                    },
                    {
                      "expression": {
                        "id": 2889,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 2882,
                              "name": "collection",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2871,
                              "src": "13088:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2883,
                              "name": "ethItem",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2880,
                              "src": "13100:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 2884,
                              "name": "itemId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2875,
                              "src": "13109:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2885,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "13087:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(address,bool,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 2887,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2867,
                              "src": "13129:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2886,
                            "name": "isEthItem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2864,
                            "src": "13119:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$_t_bool_$_t_uint256_$",
                              "typeString": "function (address) view returns (address,bool,uint256)"
                            }
                          },
                          "id": 2888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13119:16:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(address,bool,uint256)"
                          }
                        },
                        "src": "13087:48:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2890,
                      "nodeType": "ExpressionStatement",
                      "src": "13087:48:3"
                    },
                    {
                      "condition": {
                        "id": 2892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "13158:8:3",
                        "subExpression": {
                          "id": 2891,
                          "name": "ethItem",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2880,
                          "src": "13159:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 2935,
                        "nodeType": "Block",
                        "src": "13239:278:3",
                        "statements": [
                          {
                            "clauses": [
                              {
                                "block": {
                                  "id": 2921,
                                  "nodeType": "Block",
                                  "src": "13317:118:3",
                                  "statements": [
                                    {
                                      "expression": {
                                        "components": [
                                          {
                                            "id": 2911,
                                            "name": "collection",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2871,
                                            "src": "13343:10:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 2912,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13355:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          },
                                          {
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "id": 2914,
                                                    "name": "token",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2867,
                                                    "src": "13392:5:3",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 2913,
                                                  "name": "IEthItemInteroperableInterface",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6250,
                                                  "src": "13361:30:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                                    "typeString": "type(contract IEthItemInteroperableInterface)"
                                                  }
                                                },
                                                "id": 2915,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "13361:37:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                                  "typeString": "contract IEthItemInteroperableInterface"
                                                }
                                              },
                                              "id": 2916,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "objectId",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6208,
                                              "src": "13361:46:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view external returns (uint256)"
                                              }
                                            },
                                            "id": 2917,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "13361:48:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 2918,
                                            "name": "decimals",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2909,
                                            "src": "13411:8:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 2919,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "13342:78:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_address_$_t_bool_$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(address,bool,uint256,uint256)"
                                        }
                                      },
                                      "functionReturnParameters": 2878,
                                      "id": 2920,
                                      "nodeType": "Return",
                                      "src": "13335:85:3"
                                    }
                                  ]
                                },
                                "errorName": "",
                                "id": 2922,
                                "nodeType": "TryCatchClause",
                                "parameters": {
                                  "id": 2910,
                                  "nodeType": "ParameterList",
                                  "parameters": [
                                    {
                                      "constant": false,
                                      "id": 2909,
                                      "mutability": "mutable",
                                      "name": "decimals",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 2922,
                                      "src": "13299:16:3",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 2908,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13299:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "src": "13298:18:3"
                                },
                                "src": "13290:145:3"
                              },
                              {
                                "block": {
                                  "id": 2932,
                                  "nodeType": "Block",
                                  "src": "13442:65:3",
                                  "statements": [
                                    {
                                      "expression": {
                                        "components": [
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 2925,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "13476:1:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "id": 2924,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "13468:7:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 2923,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "13468:7:3",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 2926,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "13468:10:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "hexValue": "66616c7365",
                                            "id": 2927,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13480:5:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "false"
                                          },
                                          {
                                            "hexValue": "30",
                                            "id": 2928,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13487:1:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          {
                                            "hexValue": "30",
                                            "id": 2929,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13490:1:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          }
                                        ],
                                        "id": 2930,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "13467:25:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_address_$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                                          "typeString": "tuple(address,bool,int_const 0,int_const 0)"
                                        }
                                      },
                                      "functionReturnParameters": 2878,
                                      "id": 2931,
                                      "nodeType": "Return",
                                      "src": "13460:32:3"
                                    }
                                  ]
                                },
                                "errorName": "",
                                "id": 2933,
                                "nodeType": "TryCatchClause",
                                "src": "13436:71:3"
                              }
                            ],
                            "externalCall": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2904,
                                      "name": "collection",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2871,
                                      "src": "13267:10:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2903,
                                    "name": "INativeV1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8061,
                                    "src": "13257:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_INativeV1_$8061_$",
                                      "typeString": "type(contract INativeV1)"
                                    }
                                  },
                                  "id": 2905,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13257:21:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_INativeV1_$8061",
                                    "typeString": "contract INativeV1"
                                  }
                                },
                                "id": 2906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "decimals",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8004,
                                "src": "13257:30:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 2907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13257:32:3",
                              "tryCall": true,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2934,
                            "nodeType": "TryStatement",
                            "src": "13253:254:3"
                          }
                        ]
                      },
                      "id": 2936,
                      "nodeType": "IfStatement",
                      "src": "13154:363:3",
                      "trueBody": {
                        "id": 2902,
                        "nodeType": "Block",
                        "src": "13168:57:3",
                        "statements": [
                          {
                            "expression": {
                              "components": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 2895,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13198:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2894,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13190:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2893,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13190:7:3",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2896,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13190:10:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "hexValue": "66616c7365",
                                  "id": 2897,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13202:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                {
                                  "hexValue": "30",
                                  "id": 2898,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13209:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                {
                                  "hexValue": "30",
                                  "id": 2899,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13212:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "id": 2900,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "13189:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                                "typeString": "tuple(address,bool,int_const 0,int_const 0)"
                              }
                            },
                            "functionReturnParameters": 2878,
                            "id": 2901,
                            "nodeType": "Return",
                            "src": "13182:32:3"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": {
                  "id": 2865,
                  "nodeType": "StructuredDocumentation",
                  "src": "12727:94:3",
                  "text": " isNativeItem is a custom implementation to check whether an ITEM is native."
                },
                "functionSelector": "7796473a",
                "id": 2938,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "isNativeItem",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2869,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "12900:8:3"
                },
                "parameters": {
                  "id": 2868,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2867,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2938,
                      "src": "12849:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2866,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12849:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "12848:15:3"
                },
                "returnParameters": {
                  "id": 2878,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2871,
                      "mutability": "mutable",
                      "name": "collection",
                      "nodeType": "VariableDeclaration",
                      "scope": 2938,
                      "src": "12939:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2870,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12939:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2873,
                      "mutability": "mutable",
                      "name": "native",
                      "nodeType": "VariableDeclaration",
                      "scope": 2938,
                      "src": "12971:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2872,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "12971:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2875,
                      "mutability": "mutable",
                      "name": "itemId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2938,
                      "src": "12996:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2874,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12996:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2877,
                      "mutability": "mutable",
                      "name": "decimals",
                      "nodeType": "VariableDeclaration",
                      "scope": 2938,
                      "src": "13024:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2876,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13024:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "12925:125:3"
                },
                "scope": 3041,
                "src": "12827:696:3",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  7609
                ],
                "body": {
                  "id": 3039,
                  "nodeType": "Block",
                  "src": "13925:566:3",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 2962,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2941,
                            "src": "13967:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 2963,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2947,
                            "src": "13974:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 2966,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "13988:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaOrchestrator_$3041",
                                  "typeString": "contract MateriaOrchestrator"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaOrchestrator_$3041",
                                  "typeString": "contract MateriaOrchestrator"
                                }
                              ],
                              "id": 2965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13980:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2964,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13980:7:3",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13980:13:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 2968,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2943,
                            "src": "13995:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 2959,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "13935:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9448,
                          "src": "13935:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 2969,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13935:67:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2970,
                      "nodeType": "ExpressionStatement",
                      "src": "13935:67:3"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2982,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2977,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967268,
                                  "src": "14057:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MateriaOrchestrator_$3041",
                                    "typeString": "contract MateriaOrchestrator"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MateriaOrchestrator_$3041",
                                    "typeString": "contract MateriaOrchestrator"
                                  }
                                ],
                                "id": 2976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14049:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2975,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14049:7:3",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14049:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2979,
                              "name": "wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2945,
                              "src": "14064:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 2972,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2941,
                                  "src": "14032:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2971,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6105,
                                "src": "14025:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$6105_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2973,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14025:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$6105",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2974,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "allowance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6064,
                            "src": "14025:23:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 2980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14025:47:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 2981,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2943,
                          "src": "14075:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "14025:56:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2996,
                      "nodeType": "IfStatement",
                      "src": "14021:136:3",
                      "trueBody": {
                        "id": 2995,
                        "nodeType": "Block",
                        "src": "14083:74:3",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 2987,
                                  "name": "wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2945,
                                  "src": "14119:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 2990,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "14133:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 2989,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "14133:7:3",
                                          "typeDescriptions": {}
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        }
                                      ],
                                      "id": 2988,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967269,
                                      "src": "14128:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 2991,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14128:13:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_uint256",
                                      "typeString": "type(uint256)"
                                    }
                                  },
                                  "id": 2992,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "max",
                                  "nodeType": "MemberAccess",
                                  "src": "14128:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2984,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2941,
                                      "src": "14104:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2983,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6105,
                                    "src": "14097:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$6105_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 2985,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14097:13:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$6105",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 2986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "approve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6074,
                                "src": "14097:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 2993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14097:49:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 2994,
                            "nodeType": "ExpressionStatement",
                            "src": "14097:49:3"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        2998
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2998,
                          "mutability": "mutable",
                          "name": "id",
                          "nodeType": "VariableDeclaration",
                          "scope": 3039,
                          "src": "14175:7:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2997,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "14175:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 2999,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "14175:7:3"
                    },
                    {
                      "expression": {
                        "id": 3010,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 3000,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2998,
                              "src": "14193:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3001,
                              "name": "interoperable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2955,
                              "src": "14197:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "id": 3002,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "14192:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$",
                            "typeString": "tuple(uint256,address)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 3007,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2941,
                              "src": "14244:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3008,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2943,
                              "src": "14251:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3004,
                                  "name": "wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2945,
                                  "src": "14230:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3003,
                                "name": "IERC20WrapperV1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6161,
                                "src": "14214:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                  "typeString": "type(contract IERC20WrapperV1)"
                                }
                              },
                              "id": 3005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14214:24:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                "typeString": "contract IERC20WrapperV1"
                              }
                            },
                            "id": 3006,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6153,
                            "src": "14214:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$_t_address_$",
                              "typeString": "function (address,uint256) external returns (uint256,address)"
                            }
                          },
                          "id": 3009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14214:44:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$",
                            "typeString": "tuple(uint256,address)"
                          }
                        },
                        "src": "14192:66:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3011,
                      "nodeType": "ExpressionStatement",
                      "src": "14192:66:3"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 3018,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "14332:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaOrchestrator_$3041",
                                  "typeString": "contract MateriaOrchestrator"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaOrchestrator_$3041",
                                  "typeString": "contract MateriaOrchestrator"
                                }
                              ],
                              "id": 3017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14324:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3016,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14324:7:3",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14324:13:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 3020,
                            "name": "receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2949,
                            "src": "14351:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 3021,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2998,
                            "src": "14373:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 3035,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 3022,
                              "name": "itemAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2957,
                              "src": "14389:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3023,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2943,
                                "src": "14402:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 3024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14411:2:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3031,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3138",
                                        "id": 3025,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14418:2:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_18_by_1",
                                          "typeString": "int_const 18"
                                        },
                                        "value": "18"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 3027,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2941,
                                                "src": "14434:5:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 3026,
                                              "name": "IERC20Data",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6119,
                                              "src": "14423:10:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20Data_$6119_$",
                                                "typeString": "type(contract IERC20Data)"
                                              }
                                            },
                                            "id": 3028,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "14423:17:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20Data_$6119",
                                              "typeString": "contract IERC20Data"
                                            }
                                          },
                                          "id": 3029,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "decimals",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6118,
                                          "src": "14423:26:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                            "typeString": "function () view external returns (uint256)"
                                          }
                                        },
                                        "id": 3030,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14423:28:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "14418:33:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 3032,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "14417:35:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14411:41:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14402:50:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14389:63:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 3036,
                            "name": "payload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2951,
                            "src": "14466:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 3013,
                                "name": "wrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2945,
                                "src": "14285:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3012,
                              "name": "IERC20WrapperV1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6161,
                              "src": "14269:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "type(contract IERC20WrapperV1)"
                              }
                            },
                            "id": 3014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14269:24:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          },
                          "id": 3015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5916,
                          "src": "14269:41:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                            "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                          }
                        },
                        "id": 3037,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14269:214:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3038,
                      "nodeType": "ExpressionStatement",
                      "src": "14269:214:3"
                    }
                  ]
                },
                "documentation": {
                  "id": 2939,
                  "nodeType": "StructuredDocumentation",
                  "src": "13533:112:3",
                  "text": " the EthItem ERC20 wrapping functionality is exposed here, to decrease the required approvals"
                },
                "functionSelector": "1df19953",
                "id": 3040,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "wrap",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2953,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "13837:8:3"
                },
                "parameters": {
                  "id": 2952,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2941,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 3040,
                      "src": "13679:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2940,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13679:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2943,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3040,
                      "src": "13702:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2942,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13702:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2945,
                      "mutability": "mutable",
                      "name": "wrapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 3040,
                      "src": "13726:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2944,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13726:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2947,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 3040,
                      "src": "13751:12:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2946,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13751:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2949,
                      "mutability": "mutable",
                      "name": "receiver",
                      "nodeType": "VariableDeclaration",
                      "scope": 3040,
                      "src": "13773:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2948,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13773:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2951,
                      "mutability": "mutable",
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 3040,
                      "src": "13799:22:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2950,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "13799:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "13669:158:3"
                },
                "returnParameters": {
                  "id": 2958,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2955,
                      "mutability": "mutable",
                      "name": "interoperable",
                      "nodeType": "VariableDeclaration",
                      "scope": 3040,
                      "src": "13864:21:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2954,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13864:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2957,
                      "mutability": "mutable",
                      "name": "itemAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3040,
                      "src": "13895:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2956,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13895:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "13854:66:3"
                },
                "scope": 3041,
                "src": "13656:835:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 3042,
            "src": "1028:13465:3"
          }
        ],
        "src": "34:14460:3"
      }
    },
    "contracts/MateriaSwapper.sol": {
      "id": 4,
      "AST": {
        "absolutePath": "contracts/MateriaSwapper.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ],
          "IDoubleProxy": [
            5811
          ],
          "IERC1155": [
            5933
          ],
          "IERC1155Receiver": [
            5971
          ],
          "IERC1155Views": [
            6015
          ],
          "IERC165": [
            6027
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ],
          "IERC20WrapperV1": [
            6161
          ],
          "IEthItemInteroperableInterface": [
            6250
          ],
          "IEthItemMainInterface": [
            6365
          ],
          "IEthItemModelBase": [
            6392
          ],
          "IMateriaFactory": [
            7180
          ],
          "IMateriaOrchestrator": [
            7665
          ],
          "IMateriaPair": [
            7944
          ],
          "INativeV1": [
            8061
          ],
          "MateriaLibrary": [
            8693
          ],
          "MateriaOperator": [
            1926
          ],
          "MateriaSwapper": [
            5415
          ],
          "SafeMath": [
            9314
          ],
          "TransferHelper": [
            9474
          ]
        },
        "id": 5416,
        "license": "UNLICENSED",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 3043,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "40:22:4"
          },
          {
            "absolutePath": "contracts/MateriaOperator.sol",
            "file": "./MateriaOperator.sol",
            "id": 3044,
            "nodeType": "ImportDirective",
            "scope": 5416,
            "sourceUnit": 1927,
            "src": "64:31:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaOrchestrator.sol",
            "file": "./interfaces/IMateriaOrchestrator.sol",
            "id": 3045,
            "nodeType": "ImportDirective",
            "scope": 5416,
            "sourceUnit": 7666,
            "src": "96:47:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaFactory.sol",
            "file": "./interfaces/IMateriaFactory.sol",
            "id": 3046,
            "nodeType": "ImportDirective",
            "scope": 5416,
            "sourceUnit": 7181,
            "src": "144:42:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaPair.sol",
            "file": "./interfaces/IMateriaPair.sol",
            "id": 3047,
            "nodeType": "ImportDirective",
            "scope": 5416,
            "sourceUnit": 7945,
            "src": "187:39:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "./interfaces/IERC20.sol",
            "id": 3048,
            "nodeType": "ImportDirective",
            "scope": 5416,
            "sourceUnit": 6106,
            "src": "227:33:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20WrapperV1.sol",
            "file": "./interfaces/IERC20WrapperV1.sol",
            "id": 3049,
            "nodeType": "ImportDirective",
            "scope": 5416,
            "sourceUnit": 6162,
            "src": "261:42:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IEthItemMainInterface.sol",
            "file": "./interfaces/IEthItemMainInterface.sol",
            "id": 3050,
            "nodeType": "ImportDirective",
            "scope": 5416,
            "sourceUnit": 6366,
            "src": "304:48:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MateriaLibrary.sol",
            "file": "./libraries/MateriaLibrary.sol",
            "id": 3051,
            "nodeType": "ImportDirective",
            "scope": 5416,
            "sourceUnit": 8694,
            "src": "353:40:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/TransferHelper.sol",
            "file": "./libraries/TransferHelper.sol",
            "id": 3052,
            "nodeType": "ImportDirective",
            "scope": 5416,
            "sourceUnit": 9475,
            "src": "394:40:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 3053,
                  "name": "MateriaOperator",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1926,
                  "src": "464:15:4"
                },
                "id": 3054,
                "nodeType": "InheritanceSpecifier",
                "src": "464:15:4"
              }
            ],
            "contractDependencies": [
              1926,
              5971,
              6027
            ],
            "contractKind": "contract",
            "fullyImplemented": true,
            "id": 5415,
            "linearizedBaseContracts": [
              5415,
              1926,
              6027,
              5971
            ],
            "name": "MateriaSwapper",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 3171,
                  "nodeType": "Block",
                  "src": "595:625:4",
                  "statements": [
                    {
                      "body": {
                        "id": 3169,
                        "nodeType": "Block",
                        "src": "644:570:4",
                        "statements": [
                          {
                            "assignments": [
                              3080,
                              3082
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3080,
                                "mutability": "mutable",
                                "name": "input",
                                "nodeType": "VariableDeclaration",
                                "scope": 3169,
                                "src": "659:13:4",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 3079,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "659:7:4",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 3082,
                                "mutability": "mutable",
                                "name": "output",
                                "nodeType": "VariableDeclaration",
                                "scope": 3169,
                                "src": "674:14:4",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 3081,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "674:7:4",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3092,
                            "initialValue": {
                              "components": [
                                {
                                  "baseExpression": {
                                    "id": 3083,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3062,
                                    "src": "693:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 3085,
                                  "indexExpression": {
                                    "id": 3084,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3068,
                                    "src": "698:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "693:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 3086,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3062,
                                    "src": "702:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 3090,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3089,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3087,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3068,
                                      "src": "707:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 3088,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "711:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "707:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "702:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "id": 3091,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "692:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "658:56:4"
                          },
                          {
                            "assignments": [
                              3094,
                              null
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3094,
                                "mutability": "mutable",
                                "name": "token0",
                                "nodeType": "VariableDeclaration",
                                "scope": 3169,
                                "src": "729:14:4",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 3093,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "729:7:4",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "visibility": "internal"
                              },
                              null
                            ],
                            "id": 3100,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 3097,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3080,
                                  "src": "774:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3098,
                                  "name": "output",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3082,
                                  "src": "781:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 3095,
                                  "name": "MateriaLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8693,
                                  "src": "748:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                    "typeString": "type(library MateriaLibrary)"
                                  }
                                },
                                "id": 3096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sortTokens",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8269,
                                "src": "748:25:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                                  "typeString": "function (address,address) pure returns (address,address)"
                                }
                              },
                              "id": 3099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "748:40:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "728:60:4"
                          },
                          {
                            "assignments": [
                              3102
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3102,
                                "mutability": "mutable",
                                "name": "amountOut",
                                "nodeType": "VariableDeclaration",
                                "scope": 3169,
                                "src": "802:14:4",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3101,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "802:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3108,
                            "initialValue": {
                              "baseExpression": {
                                "id": 3103,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3059,
                                "src": "819:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3107,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3106,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3104,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3068,
                                  "src": "827:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 3105,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "831:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "827:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "819:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "802:31:4"
                          },
                          {
                            "assignments": [
                              3110,
                              3112
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3110,
                                "mutability": "mutable",
                                "name": "amount0Out",
                                "nodeType": "VariableDeclaration",
                                "scope": 3169,
                                "src": "848:15:4",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3109,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "848:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 3112,
                                "mutability": "mutable",
                                "name": "amount1Out",
                                "nodeType": "VariableDeclaration",
                                "scope": 3169,
                                "src": "865:15:4",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3111,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "865:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3129,
                            "initialValue": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 3115,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3113,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3080,
                                  "src": "884:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 3114,
                                  "name": "token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3094,
                                  "src": "893:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "884:15:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "components": [
                                  {
                                    "id": 3122,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3102,
                                    "src": "926:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 3125,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "942:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 3124,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "937:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 3123,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "937:4:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3126,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "937:7:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3127,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "925:20:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "id": 3128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "884:61:4",
                              "trueExpression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 3118,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "908:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 3117,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "903:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 3116,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "903:4:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3119,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "903:7:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3120,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3102,
                                    "src": "912:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3121,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "902:20:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "847:98:4"
                          },
                          {
                            "assignments": [
                              3131
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3131,
                                "mutability": "mutable",
                                "name": "to",
                                "nodeType": "VariableDeclaration",
                                "scope": 3169,
                                "src": "959:10:4",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 3130,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "959:7:4",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3150,
                            "initialValue": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3132,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3068,
                                  "src": "972:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3136,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 3133,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3062,
                                      "src": "976:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3134,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "976:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "32",
                                    "id": 3135,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "990:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "976:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "972:19:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "id": 3148,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3064,
                                "src": "1049:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "972:80:4",
                              "trueExpression": {
                                "arguments": [
                                  {
                                    "id": 3140,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3056,
                                    "src": "1017:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3141,
                                    "name": "output",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3082,
                                    "src": "1026:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 3142,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3062,
                                      "src": "1034:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3146,
                                    "indexExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3145,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 3143,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3068,
                                        "src": "1039:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "32",
                                        "id": 3144,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1043:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "1039:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1034:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3138,
                                    "name": "MateriaLibrary",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8693,
                                    "src": "994:14:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                      "typeString": "type(library MateriaLibrary)"
                                    }
                                  },
                                  "id": 3139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pairFor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8317,
                                  "src": "994:22:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 3147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "994:52:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "959:93:4"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3160,
                                  "name": "amount0Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3110,
                                  "src": "1149:10:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 3161,
                                  "name": "amount1Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3112,
                                  "src": "1161:10:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 3162,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3131,
                                  "src": "1173:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 3165,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1187:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 3164,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "1177:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (bytes memory)"
                                    },
                                    "typeName": {
                                      "id": 3163,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1181:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes"
                                      }
                                    }
                                  },
                                  "id": 3166,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1177:12:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 3154,
                                          "name": "factory",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3056,
                                          "src": "1102:7:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 3155,
                                          "name": "input",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3080,
                                          "src": "1111:5:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 3156,
                                          "name": "output",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3082,
                                          "src": "1118:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "id": 3152,
                                          "name": "MateriaLibrary",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8693,
                                          "src": "1079:14:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                            "typeString": "type(library MateriaLibrary)"
                                          }
                                        },
                                        "id": 3153,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "pairFor",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 8317,
                                        "src": "1079:22:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                          "typeString": "function (address,address,address) pure returns (address)"
                                        }
                                      },
                                      "id": 3157,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1079:46:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 3151,
                                    "name": "IMateriaPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7944,
                                    "src": "1066:12:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                                      "typeString": "type(contract IMateriaPair)"
                                    }
                                  },
                                  "id": 3158,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1066:60:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                                    "typeString": "contract IMateriaPair"
                                  }
                                },
                                "id": 3159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "swap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7891,
                                "src": "1066:65:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (uint256,uint256,address,bytes memory) external"
                                }
                              },
                              "id": 3167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1066:137:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3168,
                            "nodeType": "ExpressionStatement",
                            "src": "1066:137:4"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3070,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3068,
                          "src": "618:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 3071,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3062,
                              "src": "622:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 3072,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "622:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 3073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "636:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "622:15:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "618:19:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 3170,
                      "initializationExpression": {
                        "assignments": [
                          3068
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3068,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "scope": 3170,
                            "src": "610:6:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3067,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "610:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3069,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "610:6:4"
                      },
                      "loopExpression": {
                        "expression": {
                          "id": 3077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "639:3:4",
                          "subExpression": {
                            "id": 3076,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3068,
                            "src": "639:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3078,
                        "nodeType": "ExpressionStatement",
                        "src": "639:3:4"
                      },
                      "nodeType": "ForStatement",
                      "src": "605:609:4"
                    }
                  ]
                },
                "id": 3172,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_swap",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3065,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3056,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "scope": 3172,
                      "src": "502:15:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3055,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "502:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3059,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 3172,
                      "src": "519:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3057,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "519:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3058,
                        "nodeType": "ArrayTypeName",
                        "src": "519:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3062,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 3172,
                      "src": "542:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3060,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "542:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3061,
                        "nodeType": "ArrayTypeName",
                        "src": "542:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3064,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "scope": 3172,
                      "src": "565:11:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3063,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "565:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "501:76:4"
                },
                "returnParameters": {
                  "id": 3066,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "595:0:4"
                },
                "scope": 5415,
                "src": "487:733:4",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3408,
                  "nodeType": "Block",
                  "src": "1452:1492:4",
                  "statements": [
                    {
                      "assignments": [
                        3193
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3193,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 3408,
                          "src": "1471:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3192,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1471:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3205,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3199,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "1526:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 3198,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1518:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3197,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1518:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3200,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1518:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3196,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "1497:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 3201,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1497:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 3202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "1497:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 3203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1497:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 3195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1489:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3194,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1489:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3204,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1489:54:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1471:72:4"
                    },
                    {
                      "assignments": [
                        3207
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3207,
                          "mutability": "mutable",
                          "name": "bridgeToken",
                          "nodeType": "VariableDeclaration",
                          "scope": 3408,
                          "src": "1553:19:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3206,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1553:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3219,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3213,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "1612:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 3212,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1604:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3211,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1604:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1604:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3210,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "1583:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 3215,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1583:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 3216,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bridgeToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7296,
                              "src": "1583:47:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                "typeString": "function () view external returns (contract IERC20)"
                              }
                            },
                            "id": 3217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1583:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          ],
                          "id": 3209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1575:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3208,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1575:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1575:58:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1553:80:4"
                    },
                    {
                      "assignments": [
                        3221
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3221,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 3408,
                          "src": "1643:20:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3220,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1643:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3233,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3227,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "1703:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 3226,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1695:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3225,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1695:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3228,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1695:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3224,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "1674:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 3229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1674:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 3230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "1674:48:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 3231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1674:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 3223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1666:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3222,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1666:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1666:59:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1643:82:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 3237,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3179,
                              "src": "1768:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 3239,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 3238,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1773:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1768:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 3240,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "1777:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "1777:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 3244,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "1797:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              ],
                              "id": 3243,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1789:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3242,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1789:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3245,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1789:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 3246,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3174,
                            "src": "1804:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 3234,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "1736:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9448,
                          "src": "1736:31:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 3247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1736:77:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3248,
                      "nodeType": "ExpressionStatement",
                      "src": "1736:77:4"
                    },
                    {
                      "expression": {
                        "id": 3261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "baseExpression": {
                                "id": 3249,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3179,
                                "src": "1833:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 3251,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 3250,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1838:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "1833:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3252,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3174,
                              "src": "1842:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3253,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "1832:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                            "typeString": "tuple(address,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 3255,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3179,
                                "src": "1865:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 3257,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 3256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1870:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1865:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3258,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3174,
                              "src": "1874:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3259,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3221,
                              "src": "1884:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3254,
                            "name": "_wrapErc20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1724,
                            "src": "1854:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$_t_uint256_$",
                              "typeString": "function (address,uint256,address) returns (address,uint256)"
                            }
                          },
                          "id": 3260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1854:43:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                            "typeString": "tuple(address,uint256)"
                          }
                        },
                        "src": "1832:65:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3262,
                      "nodeType": "ExpressionStatement",
                      "src": "1832:65:4"
                    },
                    {
                      "assignments": [
                        3264
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3264,
                          "mutability": "mutable",
                          "name": "ethItemOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 3408,
                          "src": "1916:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 3263,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1916:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3265,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1916:15:4"
                    },
                    {
                      "assignments": [
                        3267
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3267,
                          "mutability": "mutable",
                          "name": "itemId",
                          "nodeType": "VariableDeclaration",
                          "scope": 3408,
                          "src": "1941:11:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3266,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1941:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3268,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1941:11:4"
                    },
                    {
                      "assignments": [
                        3270
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3270,
                          "mutability": "mutable",
                          "name": "tokenOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 3408,
                          "src": "1962:16:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3269,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1962:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3271,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1962:16:4"
                    },
                    {
                      "expression": {
                        "id": 3284,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 3272,
                              "name": "ethItemOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3264,
                              "src": "1998:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3273,
                              "name": "itemId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3267,
                              "src": "2010:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3274,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "1997:20:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 3276,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3179,
                                "src": "2031:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 3281,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3280,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 3277,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3179,
                                    "src": "2036:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 3278,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "2036:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 3279,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2050:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "2036:15:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2031:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3282,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3221,
                              "src": "2054:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3275,
                            "name": "_isEthItem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1652,
                            "src": "2020:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (address,address) view returns (bool,uint256)"
                            }
                          },
                          "id": 3283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2020:47:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "src": "1997:70:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3285,
                      "nodeType": "ExpressionStatement",
                      "src": "1997:70:4"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3296,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2090:11:4",
                          "subExpression": {
                            "id": 3286,
                            "name": "ethItemOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3264,
                            "src": "2091:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3288,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3207,
                            "src": "2105:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 3289,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3179,
                              "src": "2120:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 3294,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 3290,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3179,
                                  "src": "2125:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2125:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3292,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2139:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2125:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2120:21:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2105:36:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2090:51:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 3331,
                      "nodeType": "IfStatement",
                      "src": "2086:280:4",
                      "trueBody": {
                        "id": 3330,
                        "nodeType": "Block",
                        "src": "2143:223:4",
                        "statements": [
                          {
                            "expression": {
                              "id": 3304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3297,
                                "name": "tokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3270,
                                "src": "2157:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "baseExpression": {
                                  "id": 3298,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3179,
                                  "src": "2168:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3303,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 3299,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3179,
                                      "src": "2173:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3300,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "2173:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 3301,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2187:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "2173:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2168:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2157:32:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3305,
                            "nodeType": "ExpressionStatement",
                            "src": "2157:32:4"
                          },
                          {
                            "expression": {
                              "id": 3311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3306,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3176,
                                "src": "2203:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 3308,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3270,
                                    "src": "2232:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3309,
                                    "name": "amountOutMin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3176,
                                    "src": "2242:12:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3307,
                                  "name": "_adjustAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1836,
                                  "src": "2218:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 3310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2218:37:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2203:52:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3312,
                            "nodeType": "ExpressionStatement",
                            "src": "2203:52:4"
                          },
                          {
                            "expression": {
                              "id": 3328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 3313,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3179,
                                  "src": "2269:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3318,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3317,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 3314,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3179,
                                      "src": "2274:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3315,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "2274:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 3316,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2288:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "2274:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "2269:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3325,
                                        "name": "itemId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3267,
                                        "src": "2347:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 3322,
                                            "name": "erc20Wrapper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3221,
                                            "src": "2317:12:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 3321,
                                          "name": "IERC20WrapperV1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6161,
                                          "src": "2301:15:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                            "typeString": "type(contract IERC20WrapperV1)"
                                          }
                                        },
                                        "id": 3323,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2301:29:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                          "typeString": "contract IERC20WrapperV1"
                                        }
                                      },
                                      "id": 3324,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "asInteroperable",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6310,
                                      "src": "2301:45:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                        "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                      }
                                    },
                                    "id": 3326,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2301:53:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  ],
                                  "id": 3320,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2293:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3319,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2293:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2293:62:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2269:86:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3329,
                            "nodeType": "ExpressionStatement",
                            "src": "2269:86:4"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "id": 3339,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 3332,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3190,
                          "src": "2384:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 3335,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3193,
                              "src": "2423:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3336,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3174,
                              "src": "2432:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3337,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3179,
                              "src": "2442:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "expression": {
                              "id": 3333,
                              "name": "MateriaLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8693,
                              "src": "2394:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                "typeString": "type(library MateriaLibrary)"
                              }
                            },
                            "id": 3334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8607,
                            "src": "2394:28:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 3338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2394:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "2384:63:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 3340,
                      "nodeType": "ExpressionStatement",
                      "src": "2384:63:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 3342,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3190,
                                "src": "2465:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3347,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 3343,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3190,
                                    "src": "2473:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 3344,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "2473:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 3345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2490:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "2473:18:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2465:27:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "id": 3348,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3176,
                              "src": "2496:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2465:43:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 3350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2510:28:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bbbb4868217c0daeb6721d77d471da8aa8a80672b4258dd2de9d7ccde9bf2146",
                              "typeString": "literal_string \"INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_bbbb4868217c0daeb6721d77d471da8aa8a80672b4258dd2de9d7ccde9bf2146",
                              "typeString": "literal_string \"INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 3341,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "2457:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3351,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2457:82:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3352,
                      "nodeType": "ExpressionStatement",
                      "src": "2457:82:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 3356,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3179,
                              "src": "2599:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 3358,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 3357,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2604:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2599:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 3361,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3193,
                                "src": "2631:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 3362,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3179,
                                  "src": "2640:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3364,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 3363,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2645:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2640:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 3365,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3179,
                                  "src": "2649:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3367,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 3366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2654:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2649:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 3359,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "2608:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 3360,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "2608:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 3368,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2608:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 3369,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3190,
                              "src": "2659:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3371,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 3370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2667:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2659:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 3353,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "2558:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "2558:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2558:121:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3373,
                      "nodeType": "ExpressionStatement",
                      "src": "2558:121:4"
                    },
                    {
                      "condition": {
                        "id": 3374,
                        "name": "ethItemOut",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3264,
                        "src": "2702:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 3406,
                        "nodeType": "Block",
                        "src": "2778:160:4",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3384,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3193,
                                  "src": "2798:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3385,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3190,
                                  "src": "2807:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 3386,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3179,
                                  "src": "2816:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 3389,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967268,
                                      "src": "2830:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                        "typeString": "contract MateriaSwapper"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                        "typeString": "contract MateriaSwapper"
                                      }
                                    ],
                                    "id": 3388,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2822:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3387,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2822:7:4",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3390,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2822:13:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3383,
                                "name": "_swap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "2792:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                  "typeString": "function (address,uint256[] memory,address[] memory,address)"
                                }
                              },
                              "id": 3391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2792:44:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3392,
                            "nodeType": "ExpressionStatement",
                            "src": "2792:44:4"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3394,
                                  "name": "itemId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3267,
                                  "src": "2863:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 3395,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3270,
                                  "src": "2871:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 3396,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3190,
                                    "src": "2881:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 3401,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3400,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 3397,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3190,
                                        "src": "2889:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 3398,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "2889:14:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 3399,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2906:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "2889:18:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2881:27:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 3402,
                                  "name": "erc20Wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3221,
                                  "src": "2910:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3403,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3181,
                                  "src": "2924:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3393,
                                "name": "_unwrapErc20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1762,
                                "src": "2850:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                                  "typeString": "function (uint256,address,uint256,address,address)"
                                }
                              },
                              "id": 3404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2850:77:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3405,
                            "nodeType": "ExpressionStatement",
                            "src": "2850:77:4"
                          }
                        ]
                      },
                      "id": 3407,
                      "nodeType": "IfStatement",
                      "src": "2698:240:4",
                      "trueBody": {
                        "id": 3382,
                        "nodeType": "Block",
                        "src": "2714:58:4",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3376,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3193,
                                  "src": "2734:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3377,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3190,
                                  "src": "2743:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 3378,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3179,
                                  "src": "2752:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "id": 3379,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3181,
                                  "src": "2758:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3375,
                                "name": "_swap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "2728:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                  "typeString": "function (address,uint256[] memory,address[] memory,address)"
                                }
                              },
                              "id": 3380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2728:33:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3381,
                            "nodeType": "ExpressionStatement",
                            "src": "2728:33:4"
                          }
                        ]
                      }
                    }
                  ]
                },
                "functionSelector": "38ed1739",
                "id": 3409,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 3186,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3183,
                        "src": "1410:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3187,
                    "modifierName": {
                      "id": 3185,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "1403:6:4"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "1403:16:4"
                  }
                ],
                "name": "swapExactTokensForTokens",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3184,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3174,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 3409,
                      "src": "1275:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3173,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1275:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3176,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 3409,
                      "src": "1298:17:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3175,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1298:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3179,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 3409,
                      "src": "1325:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3177,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1325:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3178,
                        "nodeType": "ArrayTypeName",
                        "src": "1325:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3181,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 3409,
                      "src": "1356:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3180,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1356:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3183,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 3409,
                      "src": "1376:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3182,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1376:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1265:130:4"
                },
                "returnParameters": {
                  "id": 3191,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3190,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 3409,
                      "src": "1429:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3188,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "1429:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3189,
                        "nodeType": "ArrayTypeName",
                        "src": "1429:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1428:23:4"
                },
                "scope": 5415,
                "src": "1232:1712:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3686,
                  "nodeType": "Block",
                  "src": "3170:1661:4",
                  "statements": [
                    {
                      "assignments": [
                        3430
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3430,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 3686,
                          "src": "3189:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3429,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3189:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3442,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3436,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "3244:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 3435,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3236:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3434,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3236:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3437,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3236:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3433,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "3215:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 3438,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3215:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 3439,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "3215:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 3440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3215:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 3432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3207:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3431,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3207:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3441,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3207:54:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3189:72:4"
                    },
                    {
                      "assignments": [
                        3444
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3444,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 3686,
                          "src": "3271:20:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3443,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3271:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3456,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3450,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "3331:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 3449,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3323:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3448,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3323:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3451,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3323:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3447,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "3302:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 3452,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3302:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 3453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "3302:48:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 3454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3302:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 3446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3294:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3445,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3294:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3294:59:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3271:82:4"
                    },
                    {
                      "assignments": [
                        3458
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3458,
                          "mutability": "mutable",
                          "name": "tokenIn",
                          "nodeType": "VariableDeclaration",
                          "scope": 3686,
                          "src": "3372:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3457,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3372:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3462,
                      "initialValue": {
                        "baseExpression": {
                          "id": 3459,
                          "name": "path",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3416,
                          "src": "3390:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 3461,
                        "indexExpression": {
                          "hexValue": "30",
                          "id": 3460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3395:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3390:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3372:25:4"
                    },
                    {
                      "expression": {
                        "id": 3482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 3463,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3416,
                            "src": "3407:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 3465,
                          "indexExpression": {
                            "hexValue": "30",
                            "id": 3464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3412:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "3407:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 3476,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3416,
                                        "src": "3508:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 3478,
                                      "indexExpression": {
                                        "hexValue": "30",
                                        "id": 3477,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3513:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3508:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3473,
                                          "name": "erc20Wrapper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3444,
                                          "src": "3487:12:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 3472,
                                        "name": "IERC20WrapperV1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6161,
                                        "src": "3471:15:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                          "typeString": "type(contract IERC20WrapperV1)"
                                        }
                                      },
                                      "id": 3474,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3471:29:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                        "typeString": "contract IERC20WrapperV1"
                                      }
                                    },
                                    "id": 3475,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "object",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6141,
                                    "src": "3471:36:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 3479,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3471:45:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3469,
                                      "name": "erc20Wrapper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3444,
                                      "src": "3441:12:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 3468,
                                    "name": "IERC20WrapperV1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6161,
                                    "src": "3425:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                      "typeString": "type(contract IERC20WrapperV1)"
                                    }
                                  },
                                  "id": 3470,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3425:29:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                    "typeString": "contract IERC20WrapperV1"
                                  }
                                },
                                "id": 3471,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "asInteroperable",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6310,
                                "src": "3425:45:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                  "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                }
                              },
                              "id": 3480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3425:92:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                "typeString": "contract IEthItemInteroperableInterface"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                "typeString": "contract IEthItemInteroperableInterface"
                              }
                            ],
                            "id": 3467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3417:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 3466,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3417:7:4",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3417:101:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3407:111:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3483,
                      "nodeType": "ExpressionStatement",
                      "src": "3407:111:4"
                    },
                    {
                      "assignments": [
                        3485
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3485,
                          "mutability": "mutable",
                          "name": "ethItemOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 3686,
                          "src": "3537:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 3484,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "3537:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3486,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3537:15:4"
                    },
                    {
                      "assignments": [
                        3488
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3488,
                          "mutability": "mutable",
                          "name": "itemId",
                          "nodeType": "VariableDeclaration",
                          "scope": 3686,
                          "src": "3562:11:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3487,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3562:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3489,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3562:11:4"
                    },
                    {
                      "expression": {
                        "id": 3502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 3490,
                              "name": "ethItemOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3485,
                              "src": "3584:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3491,
                              "name": "itemId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3488,
                              "src": "3596:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3492,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "3583:20:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 3494,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3416,
                                "src": "3617:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 3499,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3498,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 3495,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3416,
                                    "src": "3622:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 3496,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "3622:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 3497,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3636:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "3622:15:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3617:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3500,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3444,
                              "src": "3640:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3493,
                            "name": "_isEthItem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1652,
                            "src": "3606:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (address,address) view returns (bool,uint256)"
                            }
                          },
                          "id": 3501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3606:47:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "src": "3583:70:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3503,
                      "nodeType": "ExpressionStatement",
                      "src": "3583:70:4"
                    },
                    {
                      "assignments": [
                        3505
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3505,
                          "mutability": "mutable",
                          "name": "tokenOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 3686,
                          "src": "3663:16:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3504,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3663:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3506,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3663:16:4"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3527,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3702:11:4",
                          "subExpression": {
                            "id": 3507,
                            "name": "ethItemOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3485,
                            "src": "3703:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 3514,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967268,
                                            "src": "3754:4:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                              "typeString": "contract MateriaSwapper"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                              "typeString": "contract MateriaSwapper"
                                            }
                                          ],
                                          "id": 3513,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3746:7:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 3512,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3746:7:4",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 3515,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3746:13:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 3511,
                                      "name": "IMateriaOrchestrator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7665,
                                      "src": "3725:20:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                        "typeString": "type(contract IMateriaOrchestrator)"
                                      }
                                    },
                                    "id": 3516,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3725:35:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                      "typeString": "contract IMateriaOrchestrator"
                                    }
                                  },
                                  "id": 3517,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "bridgeToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7296,
                                  "src": "3725:47:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                    "typeString": "function () view external returns (contract IERC20)"
                                  }
                                },
                                "id": 3518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3725:49:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$6105",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$6105",
                                  "typeString": "contract IERC20"
                                }
                              ],
                              "id": 3510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3717:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3509,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3717:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3717:58:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 3520,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3416,
                              "src": "3779:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 3525,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 3521,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3416,
                                  "src": "3784:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "3784:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3798:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "3784:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3779:21:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3717:83:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3702:98:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 3562,
                      "nodeType": "IfStatement",
                      "src": "3698:322:4",
                      "trueBody": {
                        "id": 3561,
                        "nodeType": "Block",
                        "src": "3802:218:4",
                        "statements": [
                          {
                            "expression": {
                              "id": 3535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3528,
                                "name": "tokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3505,
                                "src": "3816:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "baseExpression": {
                                  "id": 3529,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3416,
                                  "src": "3827:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3534,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3533,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 3530,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3416,
                                      "src": "3832:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3531,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "3832:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 3532,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3846:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "3832:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3827:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3816:32:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3536,
                            "nodeType": "ExpressionStatement",
                            "src": "3816:32:4"
                          },
                          {
                            "expression": {
                              "id": 3542,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3537,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3411,
                                "src": "3862:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 3539,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3505,
                                    "src": "3889:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3540,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3411,
                                    "src": "3899:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3538,
                                  "name": "_adjustAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1836,
                                  "src": "3875:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 3541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3875:34:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3862:47:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3543,
                            "nodeType": "ExpressionStatement",
                            "src": "3862:47:4"
                          },
                          {
                            "expression": {
                              "id": 3559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 3544,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3416,
                                  "src": "3923:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3549,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3548,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 3545,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3416,
                                      "src": "3928:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3546,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "3928:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 3547,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3942:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "3928:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3923:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3556,
                                        "name": "itemId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3488,
                                        "src": "4001:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 3553,
                                            "name": "erc20Wrapper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3444,
                                            "src": "3971:12:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 3552,
                                          "name": "IERC20WrapperV1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6161,
                                          "src": "3955:15:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                            "typeString": "type(contract IERC20WrapperV1)"
                                          }
                                        },
                                        "id": 3554,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3955:29:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                          "typeString": "contract IERC20WrapperV1"
                                        }
                                      },
                                      "id": 3555,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "asInteroperable",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6310,
                                      "src": "3955:45:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                        "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                      }
                                    },
                                    "id": 3557,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3955:53:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  ],
                                  "id": 3551,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3947:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3550,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3947:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3558,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3947:62:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3923:86:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3560,
                            "nodeType": "ExpressionStatement",
                            "src": "3923:86:4"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "id": 3570,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 3563,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3427,
                          "src": "4030:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 3566,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3430,
                              "src": "4068:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3567,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3411,
                              "src": "4077:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3568,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3416,
                              "src": "4088:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "expression": {
                              "id": 3564,
                              "name": "MateriaLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8693,
                              "src": "4040:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                "typeString": "type(library MateriaLibrary)"
                              }
                            },
                            "id": 3565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8692,
                            "src": "4040:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 3569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4040:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "4030:63:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 3571,
                      "nodeType": "ExpressionStatement",
                      "src": "4030:63:4"
                    },
                    {
                      "expression": {
                        "id": 3592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 3572,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3427,
                            "src": "4103:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 3574,
                          "indexExpression": {
                            "hexValue": "30",
                            "id": 3573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4111:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "4103:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 3575,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3427,
                                "src": "4116:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3577,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 3576,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4124:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4116:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3587,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "3130",
                                    "id": 3578,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4130:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3585,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "3138",
                                          "id": 3579,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4135:2:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_18_by_1",
                                            "typeString": "int_const 18"
                                          },
                                          "value": "18"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "arguments": [
                                                {
                                                  "id": 3581,
                                                  "name": "tokenIn",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3458,
                                                  "src": "4151:7:4",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 3580,
                                                "name": "IERC20Data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6119,
                                                "src": "4140:10:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC20Data_$6119_$",
                                                  "typeString": "type(contract IERC20Data)"
                                                }
                                              },
                                              "id": 3582,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "4140:19:4",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20Data_$6119",
                                                "typeString": "contract IERC20Data"
                                              }
                                            },
                                            "id": 3583,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "decimals",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6118,
                                            "src": "4140:28:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                              "typeString": "function () view external returns (uint256)"
                                            }
                                          },
                                          "id": 3584,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4140:30:4",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "4135:35:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3586,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "4134:37:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4130:41:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 3588,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4129:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4116:56:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 3590,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4175:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4116:60:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4103:73:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3593,
                      "nodeType": "ExpressionStatement",
                      "src": "4103:73:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 3595,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3427,
                                "src": "4195:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3597,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 3596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4203:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4195:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "id": 3598,
                              "name": "amountInMax",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3413,
                              "src": "4209:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4195:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4558434553534956455f494e5055545f414d4f554e54",
                            "id": 3600,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4222:24:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1ff989705ae00849337ffb650a4f4c5df36920f3e768f284b12a852a5ff9bbdb",
                              "typeString": "literal_string \"EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1ff989705ae00849337ffb650a4f4c5df36920f3e768f284b12a852a5ff9bbdb",
                              "typeString": "literal_string \"EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 3594,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "4187:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3601,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4187:60:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3602,
                      "nodeType": "ExpressionStatement",
                      "src": "4187:60:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 3606,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3458,
                            "src": "4298:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 3607,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "4307:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "4307:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 3611,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "4327:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              ],
                              "id": 3610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4319:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3609,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4319:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4319:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 3613,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3427,
                              "src": "4334:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3615,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 3614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4342:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4334:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 3603,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "4266:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9448,
                          "src": "4266:31:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 3616,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4266:79:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3617,
                      "nodeType": "ExpressionStatement",
                      "src": "4266:79:4"
                    },
                    {
                      "expression": {
                        "id": 3629,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            null,
                            {
                              "baseExpression": {
                                "id": 3618,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3427,
                                "src": "4367:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3620,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 3619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4375:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "4367:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3621,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "4364:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$_t_uint256_$",
                            "typeString": "tuple(,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 3623,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3458,
                              "src": "4392:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3624,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3427,
                                "src": "4401:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3626,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 3625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4409:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4401:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3627,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3444,
                              "src": "4413:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3622,
                            "name": "_wrapErc20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1724,
                            "src": "4381:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$_t_uint256_$",
                              "typeString": "function (address,uint256,address) returns (address,uint256)"
                            }
                          },
                          "id": 3628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4381:45:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                            "typeString": "tuple(address,uint256)"
                          }
                        },
                        "src": "4364:62:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3630,
                      "nodeType": "ExpressionStatement",
                      "src": "4364:62:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 3634,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3416,
                              "src": "4486:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 3636,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 3635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4491:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4486:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 3639,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3430,
                                "src": "4518:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 3640,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3416,
                                  "src": "4527:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3642,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 3641,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4532:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4527:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 3643,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3416,
                                  "src": "4536:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3645,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 3644,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4541:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4536:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 3637,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "4495:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 3638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "4495:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 3646,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4495:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 3647,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3427,
                              "src": "4546:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3649,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 3648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4554:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4546:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 3631,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "4445:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "4445:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3650,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4445:121:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3651,
                      "nodeType": "ExpressionStatement",
                      "src": "4445:121:4"
                    },
                    {
                      "condition": {
                        "id": 3652,
                        "name": "ethItemOut",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3485,
                        "src": "4589:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 3684,
                        "nodeType": "Block",
                        "src": "4665:160:4",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3662,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3430,
                                  "src": "4685:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3663,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3427,
                                  "src": "4694:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 3664,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3416,
                                  "src": "4703:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 3667,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967268,
                                      "src": "4717:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                        "typeString": "contract MateriaSwapper"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                        "typeString": "contract MateriaSwapper"
                                      }
                                    ],
                                    "id": 3666,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4709:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3665,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4709:7:4",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3668,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4709:13:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3661,
                                "name": "_swap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "4679:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                  "typeString": "function (address,uint256[] memory,address[] memory,address)"
                                }
                              },
                              "id": 3669,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4679:44:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3670,
                            "nodeType": "ExpressionStatement",
                            "src": "4679:44:4"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3672,
                                  "name": "itemId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3488,
                                  "src": "4750:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 3673,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3505,
                                  "src": "4758:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 3674,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3427,
                                    "src": "4768:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 3679,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3678,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 3675,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3427,
                                        "src": "4776:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 3676,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "4776:14:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 3677,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4793:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "4776:18:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4768:27:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 3680,
                                  "name": "erc20Wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3444,
                                  "src": "4797:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3681,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3418,
                                  "src": "4811:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3671,
                                "name": "_unwrapErc20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1762,
                                "src": "4737:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                                  "typeString": "function (uint256,address,uint256,address,address)"
                                }
                              },
                              "id": 3682,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4737:77:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3683,
                            "nodeType": "ExpressionStatement",
                            "src": "4737:77:4"
                          }
                        ]
                      },
                      "id": 3685,
                      "nodeType": "IfStatement",
                      "src": "4585:240:4",
                      "trueBody": {
                        "id": 3660,
                        "nodeType": "Block",
                        "src": "4601:58:4",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3654,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3430,
                                  "src": "4621:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3655,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3427,
                                  "src": "4630:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 3656,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3416,
                                  "src": "4639:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "id": 3657,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3418,
                                  "src": "4645:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3653,
                                "name": "_swap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "4615:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                  "typeString": "function (address,uint256[] memory,address[] memory,address)"
                                }
                              },
                              "id": 3658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4615:33:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3659,
                            "nodeType": "ExpressionStatement",
                            "src": "4615:33:4"
                          }
                        ]
                      }
                    }
                  ]
                },
                "functionSelector": "8803dbee",
                "id": 3687,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 3423,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3420,
                        "src": "3128:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3424,
                    "modifierName": {
                      "id": 3422,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "3121:6:4"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3121:16:4"
                  }
                ],
                "name": "swapTokensForExactTokens",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3421,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3411,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 3687,
                      "src": "2993:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3410,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2993:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3413,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 3687,
                      "src": "3017:16:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3412,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3017:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3416,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 3687,
                      "src": "3043:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3414,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3043:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3415,
                        "nodeType": "ArrayTypeName",
                        "src": "3043:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3418,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 3687,
                      "src": "3074:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3417,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3074:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3420,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 3687,
                      "src": "3094:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3419,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3094:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2983:130:4"
                },
                "returnParameters": {
                  "id": 3428,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3427,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 3687,
                      "src": "3147:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3425,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3147:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3426,
                        "nodeType": "ArrayTypeName",
                        "src": "3147:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3146:23:4"
                },
                "scope": 5415,
                "src": "2950:1881:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3903,
                  "nodeType": "Block",
                  "src": "5044:1366:4",
                  "statements": [
                    {
                      "assignments": [
                        3706
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3706,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 3903,
                          "src": "5054:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3705,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5054:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3718,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3712,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "5109:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 3711,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5101:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3710,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5101:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3713,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5101:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3709,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "5080:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 3714,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5080:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 3715,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "5080:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 3716,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5080:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 3708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5072:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3707,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5072:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5072:54:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5054:72:4"
                    },
                    {
                      "assignments": [
                        3720
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3720,
                          "mutability": "mutable",
                          "name": "bridgeToken",
                          "nodeType": "VariableDeclaration",
                          "scope": 3903,
                          "src": "5136:19:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3719,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5136:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3732,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3726,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "5195:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 3725,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5187:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3724,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5187:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3727,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5187:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3723,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "5166:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 3728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5166:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 3729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bridgeToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7296,
                              "src": "5166:47:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                "typeString": "function () view external returns (contract IERC20)"
                              }
                            },
                            "id": 3730,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5166:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          ],
                          "id": 3722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5158:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3721,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5158:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3731,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5158:58:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5136:80:4"
                    },
                    {
                      "assignments": [
                        3734
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3734,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 3903,
                          "src": "5226:20:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3733,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5226:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3746,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3740,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "5286:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 3739,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5278:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3738,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5278:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3741,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5278:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3737,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "5257:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 3742,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5257:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 3743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "5257:48:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 3744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5257:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 3736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5249:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3735,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5249:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3745,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5249:59:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5226:82:4"
                    },
                    {
                      "expression": {
                        "id": 3755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 3747,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3692,
                            "src": "5319:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 3749,
                          "indexExpression": {
                            "hexValue": "30",
                            "id": 3748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5324:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "5319:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 3751,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "5338:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "src": "5338:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3753,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3734,
                              "src": "5349:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3750,
                            "name": "_wrapEth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1810,
                            "src": "5329:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$",
                              "typeString": "function (uint256,address) returns (address)"
                            }
                          },
                          "id": 3754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5329:33:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5319:43:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3756,
                      "nodeType": "ExpressionStatement",
                      "src": "5319:43:4"
                    },
                    {
                      "assignments": [
                        3758
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3758,
                          "mutability": "mutable",
                          "name": "ethItemOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 3903,
                          "src": "5381:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 3757,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "5381:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3759,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5381:15:4"
                    },
                    {
                      "assignments": [
                        3761
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3761,
                          "mutability": "mutable",
                          "name": "itemId",
                          "nodeType": "VariableDeclaration",
                          "scope": 3903,
                          "src": "5406:11:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3760,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5406:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3762,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5406:11:4"
                    },
                    {
                      "assignments": [
                        3764
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3764,
                          "mutability": "mutable",
                          "name": "tokenOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 3903,
                          "src": "5427:16:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3763,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5427:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3765,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5427:16:4"
                    },
                    {
                      "expression": {
                        "id": 3778,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 3766,
                              "name": "ethItemOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3758,
                              "src": "5463:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3767,
                              "name": "itemId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3761,
                              "src": "5475:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3768,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "5462:20:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 3770,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3692,
                                "src": "5496:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 3775,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3774,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 3771,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3692,
                                    "src": "5501:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 3772,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "5501:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 3773,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5515:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5501:15:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5496:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3776,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3734,
                              "src": "5519:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3769,
                            "name": "_isEthItem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1652,
                            "src": "5485:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (address,address) view returns (bool,uint256)"
                            }
                          },
                          "id": 3777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5485:47:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "src": "5462:70:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3779,
                      "nodeType": "ExpressionStatement",
                      "src": "5462:70:4"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3790,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5555:11:4",
                          "subExpression": {
                            "id": 3780,
                            "name": "ethItemOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3758,
                            "src": "5556:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3782,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3720,
                            "src": "5570:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 3783,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3692,
                              "src": "5585:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 3788,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 3784,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3692,
                                  "src": "5590:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "5590:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3786,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5604:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "5590:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5585:21:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5570:36:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5555:51:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 3825,
                      "nodeType": "IfStatement",
                      "src": "5551:280:4",
                      "trueBody": {
                        "id": 3824,
                        "nodeType": "Block",
                        "src": "5608:223:4",
                        "statements": [
                          {
                            "expression": {
                              "id": 3798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3791,
                                "name": "tokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3764,
                                "src": "5622:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "baseExpression": {
                                  "id": 3792,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3692,
                                  "src": "5633:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3797,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3796,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 3793,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3692,
                                      "src": "5638:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3794,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "5638:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 3795,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5652:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "5638:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5633:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5622:32:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3799,
                            "nodeType": "ExpressionStatement",
                            "src": "5622:32:4"
                          },
                          {
                            "expression": {
                              "id": 3805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3800,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3689,
                                "src": "5668:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 3802,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3764,
                                    "src": "5697:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3803,
                                    "name": "amountOutMin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3689,
                                    "src": "5707:12:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3801,
                                  "name": "_adjustAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1836,
                                  "src": "5683:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 3804,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5683:37:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5668:52:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3806,
                            "nodeType": "ExpressionStatement",
                            "src": "5668:52:4"
                          },
                          {
                            "expression": {
                              "id": 3822,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 3807,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3692,
                                  "src": "5734:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3812,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3811,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 3808,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3692,
                                      "src": "5739:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3809,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "5739:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 3810,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5753:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "5739:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "5734:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3819,
                                        "name": "itemId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3761,
                                        "src": "5812:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 3816,
                                            "name": "erc20Wrapper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3734,
                                            "src": "5782:12:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 3815,
                                          "name": "IERC20WrapperV1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6161,
                                          "src": "5766:15:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                            "typeString": "type(contract IERC20WrapperV1)"
                                          }
                                        },
                                        "id": 3817,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5766:29:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                          "typeString": "contract IERC20WrapperV1"
                                        }
                                      },
                                      "id": 3818,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "asInteroperable",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6310,
                                      "src": "5766:45:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                        "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                      }
                                    },
                                    "id": 3820,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5766:53:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  ],
                                  "id": 3814,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5758:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3813,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5758:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3821,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5758:62:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5734:86:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3823,
                            "nodeType": "ExpressionStatement",
                            "src": "5734:86:4"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "id": 3834,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 3826,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3703,
                          "src": "5849:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 3829,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3706,
                              "src": "5888:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 3830,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "5897:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "src": "5897:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3832,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3692,
                              "src": "5908:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "expression": {
                              "id": 3827,
                              "name": "MateriaLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8693,
                              "src": "5859:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                "typeString": "type(library MateriaLibrary)"
                              }
                            },
                            "id": 3828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8607,
                            "src": "5859:28:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 3833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5859:54:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "5849:64:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 3835,
                      "nodeType": "ExpressionStatement",
                      "src": "5849:64:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 3837,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3703,
                                "src": "5931:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3842,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3841,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 3838,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3703,
                                    "src": "5939:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 3839,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "5939:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 3840,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5956:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5939:18:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5931:27:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "id": 3843,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3689,
                              "src": "5962:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5931:43:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 3845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5976:28:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bbbb4868217c0daeb6721d77d471da8aa8a80672b4258dd2de9d7ccde9bf2146",
                              "typeString": "literal_string \"INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_bbbb4868217c0daeb6721d77d471da8aa8a80672b4258dd2de9d7ccde9bf2146",
                              "typeString": "literal_string \"INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 3836,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "5923:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5923:82:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3847,
                      "nodeType": "ExpressionStatement",
                      "src": "5923:82:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 3851,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3692,
                              "src": "6065:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 3853,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 3852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6070:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6065:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 3856,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3706,
                                "src": "6097:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 3857,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3692,
                                  "src": "6106:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3859,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 3858,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6111:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6106:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 3860,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3692,
                                  "src": "6115:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3862,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 3861,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6120:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6115:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 3854,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "6074:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 3855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "6074:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 3863,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6074:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 3864,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3703,
                              "src": "6125:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3866,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 3865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6133:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6125:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 3848,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "6024:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "6024:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3867,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6024:121:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3868,
                      "nodeType": "ExpressionStatement",
                      "src": "6024:121:4"
                    },
                    {
                      "condition": {
                        "id": 3869,
                        "name": "ethItemOut",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3758,
                        "src": "6168:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 3901,
                        "nodeType": "Block",
                        "src": "6244:160:4",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3879,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3706,
                                  "src": "6264:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3880,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3703,
                                  "src": "6273:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 3881,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3692,
                                  "src": "6282:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 3884,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967268,
                                      "src": "6296:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                        "typeString": "contract MateriaSwapper"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                        "typeString": "contract MateriaSwapper"
                                      }
                                    ],
                                    "id": 3883,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6288:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3882,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6288:7:4",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3885,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6288:13:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3878,
                                "name": "_swap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "6258:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                  "typeString": "function (address,uint256[] memory,address[] memory,address)"
                                }
                              },
                              "id": 3886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6258:44:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3887,
                            "nodeType": "ExpressionStatement",
                            "src": "6258:44:4"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3889,
                                  "name": "itemId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3761,
                                  "src": "6329:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 3890,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3764,
                                  "src": "6337:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 3891,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3703,
                                    "src": "6347:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 3896,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3895,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 3892,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3703,
                                        "src": "6355:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 3893,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "6355:14:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 3894,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6372:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "6355:18:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6347:27:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 3897,
                                  "name": "erc20Wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3734,
                                  "src": "6376:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3898,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3694,
                                  "src": "6390:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3888,
                                "name": "_unwrapErc20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1762,
                                "src": "6316:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                                  "typeString": "function (uint256,address,uint256,address,address)"
                                }
                              },
                              "id": 3899,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6316:77:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3900,
                            "nodeType": "ExpressionStatement",
                            "src": "6316:77:4"
                          }
                        ]
                      },
                      "id": 3902,
                      "nodeType": "IfStatement",
                      "src": "6164:240:4",
                      "trueBody": {
                        "id": 3877,
                        "nodeType": "Block",
                        "src": "6180:58:4",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3871,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3706,
                                  "src": "6200:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3872,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3703,
                                  "src": "6209:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 3873,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3692,
                                  "src": "6218:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "id": 3874,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3694,
                                  "src": "6224:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3870,
                                "name": "_swap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "6194:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                  "typeString": "function (address,uint256[] memory,address[] memory,address)"
                                }
                              },
                              "id": 3875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6194:33:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3876,
                            "nodeType": "ExpressionStatement",
                            "src": "6194:33:4"
                          }
                        ]
                      }
                    }
                  ]
                },
                "functionSelector": "7ff36ab5",
                "id": 3904,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 3699,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3696,
                        "src": "4994:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3700,
                    "modifierName": {
                      "id": 3698,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "4987:6:4"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "4987:16:4"
                  }
                ],
                "name": "swapExactETHForTokens",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3697,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3689,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 3904,
                      "src": "4882:17:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3688,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4882:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3692,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 3904,
                      "src": "4909:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3690,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4909:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3691,
                        "nodeType": "ArrayTypeName",
                        "src": "4909:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3694,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 3904,
                      "src": "4940:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3693,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4940:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3696,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 3904,
                      "src": "4960:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3695,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4960:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4872:107:4"
                },
                "returnParameters": {
                  "id": 3704,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3703,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 3904,
                      "src": "5021:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3701,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5021:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3702,
                        "nodeType": "ArrayTypeName",
                        "src": "5021:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5020:23:4"
                },
                "scope": 5415,
                "src": "4842:1568:4",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4106,
                  "nodeType": "Block",
                  "src": "6636:1105:4",
                  "statements": [
                    {
                      "assignments": [
                        3925
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3925,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 4106,
                          "src": "6646:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3924,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6646:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3937,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3931,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "6701:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 3930,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6693:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3929,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6693:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3932,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6693:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3928,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "6672:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 3933,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6672:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 3934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "6672:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 3935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6672:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 3927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6664:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3926,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6664:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3936,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6664:54:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6646:72:4"
                    },
                    {
                      "assignments": [
                        3939
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3939,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 4106,
                          "src": "6728:20:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3938,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6728:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3951,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3945,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "6788:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 3944,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6780:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3943,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6780:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3946,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6780:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3942,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "6759:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 3947,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6759:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 3948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "6759:48:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 3949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6759:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 3941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6751:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3940,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6751:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3950,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6751:59:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6728:82:4"
                    },
                    {
                      "assignments": [
                        3953
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3953,
                          "mutability": "mutable",
                          "name": "ethId",
                          "nodeType": "VariableDeclaration",
                          "scope": 4106,
                          "src": "6820:10:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3952,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6820:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3965,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3959,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "6867:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 3958,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6859:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3957,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6859:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3960,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6859:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3956,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "6838:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 3961,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6838:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 3962,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "ETHEREUM_OBJECT_ID",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7307,
                              "src": "6838:54:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 3963,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6838:56:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6833:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 3954,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6833:4:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3964,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6833:62:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6820:75:4"
                    },
                    {
                      "assignments": [
                        3967
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3967,
                          "mutability": "mutable",
                          "name": "token",
                          "nodeType": "VariableDeclaration",
                          "scope": 4106,
                          "src": "6914:13:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3966,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6914:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 3971,
                      "initialValue": {
                        "baseExpression": {
                          "id": 3968,
                          "name": "path",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3911,
                          "src": "6930:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 3970,
                        "indexExpression": {
                          "hexValue": "30",
                          "id": 3969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6935:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6930:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6914:23:4"
                    },
                    {
                      "expression": {
                        "id": 3991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 3972,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3911,
                            "src": "6947:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 3974,
                          "indexExpression": {
                            "hexValue": "30",
                            "id": 3973,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6952:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "6947:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 3985,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3911,
                                        "src": "7048:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 3987,
                                      "indexExpression": {
                                        "hexValue": "30",
                                        "id": 3986,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7053:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7048:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3982,
                                          "name": "erc20Wrapper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3939,
                                          "src": "7027:12:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 3981,
                                        "name": "IERC20WrapperV1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6161,
                                        "src": "7011:15:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                          "typeString": "type(contract IERC20WrapperV1)"
                                        }
                                      },
                                      "id": 3983,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7011:29:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                        "typeString": "contract IERC20WrapperV1"
                                      }
                                    },
                                    "id": 3984,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "object",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6141,
                                    "src": "7011:36:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 3988,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7011:45:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3978,
                                      "name": "erc20Wrapper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3939,
                                      "src": "6981:12:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 3977,
                                    "name": "IERC20WrapperV1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6161,
                                    "src": "6965:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                      "typeString": "type(contract IERC20WrapperV1)"
                                    }
                                  },
                                  "id": 3979,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6965:29:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                    "typeString": "contract IERC20WrapperV1"
                                  }
                                },
                                "id": 3980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "asInteroperable",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6310,
                                "src": "6965:45:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                  "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                }
                              },
                              "id": 3989,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6965:92:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                "typeString": "contract IEthItemInteroperableInterface"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                "typeString": "contract IEthItemInteroperableInterface"
                              }
                            ],
                            "id": 3976,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6957:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 3975,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6957:7:4",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6957:101:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6947:111:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3992,
                      "nodeType": "ExpressionStatement",
                      "src": "6947:111:4"
                    },
                    {
                      "expression": {
                        "id": 4000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 3993,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3922,
                          "src": "7069:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 3996,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3925,
                              "src": "7107:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3997,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3906,
                              "src": "7116:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3998,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3911,
                              "src": "7127:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "expression": {
                              "id": 3994,
                              "name": "MateriaLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8693,
                              "src": "7079:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                "typeString": "type(library MateriaLibrary)"
                              }
                            },
                            "id": 3995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8692,
                            "src": "7079:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 3999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7079:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "7069:63:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 4001,
                      "nodeType": "ExpressionStatement",
                      "src": "7069:63:4"
                    },
                    {
                      "expression": {
                        "id": 4024,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 4002,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3922,
                            "src": "7142:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 4004,
                          "indexExpression": {
                            "hexValue": "30",
                            "id": 4003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7150:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7142:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 4005,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3922,
                                "src": "7155:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4007,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7163:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7155:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4019,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "3130",
                                    "id": 4008,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7169:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4017,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "3138",
                                          "id": 4009,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7174:2:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_18_by_1",
                                            "typeString": "int_const 18"
                                          },
                                          "value": "18"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "arguments": [
                                                {
                                                  "baseExpression": {
                                                    "id": 4011,
                                                    "name": "path",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3911,
                                                    "src": "7190:4:4",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                      "typeString": "address[] memory"
                                                    }
                                                  },
                                                  "id": 4013,
                                                  "indexExpression": {
                                                    "hexValue": "30",
                                                    "id": 4012,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "7195:1:4",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "7190:7:4",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 4010,
                                                "name": "IERC20Data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6119,
                                                "src": "7179:10:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC20Data_$6119_$",
                                                  "typeString": "type(contract IERC20Data)"
                                                }
                                              },
                                              "id": 4014,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "7179:19:4",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20Data_$6119",
                                                "typeString": "contract IERC20Data"
                                              }
                                            },
                                            "id": 4015,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "decimals",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6118,
                                            "src": "7179:28:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                              "typeString": "function () view external returns (uint256)"
                                            }
                                          },
                                          "id": 4016,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7179:30:4",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7174:35:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4018,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "7173:37:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7169:41:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 4020,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7168:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7155:56:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 4022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7214:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "7155:60:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7142:73:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4025,
                      "nodeType": "ExpressionStatement",
                      "src": "7142:73:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 4027,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3922,
                                "src": "7238:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4029,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7246:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7238:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "id": 4030,
                              "name": "amountInMax",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3908,
                              "src": "7252:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7238:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4558434553534956455f494e5055545f414d4f554e54",
                            "id": 4032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7265:24:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1ff989705ae00849337ffb650a4f4c5df36920f3e768f284b12a852a5ff9bbdb",
                              "typeString": "literal_string \"EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1ff989705ae00849337ffb650a4f4c5df36920f3e768f284b12a852a5ff9bbdb",
                              "typeString": "literal_string \"EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 4026,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "7230:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7230:60:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4034,
                      "nodeType": "ExpressionStatement",
                      "src": "7230:60:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 4038,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3967,
                            "src": "7333:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 4039,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "7340:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4040,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "7340:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 4043,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "7360:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              ],
                              "id": 4042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7352:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4041,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7352:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7352:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 4045,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3922,
                              "src": "7367:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4047,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4046,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7375:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7367:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 4035,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "7301:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9448,
                          "src": "7301:31:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 4048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7301:77:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4049,
                      "nodeType": "ExpressionStatement",
                      "src": "7301:77:4"
                    },
                    {
                      "expression": {
                        "id": 4061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            null,
                            {
                              "baseExpression": {
                                "id": 4050,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3922,
                                "src": "7400:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4052,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7408:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "7400:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4053,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "7397:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$_t_uint256_$",
                            "typeString": "tuple(,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 4055,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3967,
                              "src": "7425:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 4056,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3922,
                                "src": "7432:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4058,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7440:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7432:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4059,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3939,
                              "src": "7444:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4054,
                            "name": "_wrapErc20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1724,
                            "src": "7414:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$_t_uint256_$",
                              "typeString": "function (address,uint256,address) returns (address,uint256)"
                            }
                          },
                          "id": 4060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7414:43:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                            "typeString": "tuple(address,uint256)"
                          }
                        },
                        "src": "7397:60:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4062,
                      "nodeType": "ExpressionStatement",
                      "src": "7397:60:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 4066,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3911,
                              "src": "7517:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4068,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7522:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7517:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 4071,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3925,
                                "src": "7549:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 4072,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3911,
                                  "src": "7558:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4074,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 4073,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7563:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7558:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 4075,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3911,
                                  "src": "7567:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4077,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 4076,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7572:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7567:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 4069,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "7526:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 4070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "7526:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 4078,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7526:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 4079,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3922,
                              "src": "7577:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4081,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7585:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7577:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 4063,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "7476:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "7476:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 4082,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7476:121:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4083,
                      "nodeType": "ExpressionStatement",
                      "src": "7476:121:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 4085,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3925,
                            "src": "7622:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 4086,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3922,
                            "src": "7631:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "id": 4087,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3911,
                            "src": "7640:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 4090,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "7654:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              ],
                              "id": 4089,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7646:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4088,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7646:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7646:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4084,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3172,
                          "src": "7616:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (address,uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 4092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7616:44:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4093,
                      "nodeType": "ExpressionStatement",
                      "src": "7616:44:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 4095,
                            "name": "ethId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3953,
                            "src": "7681:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 4096,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3922,
                              "src": "7688:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4101,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4100,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4097,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3922,
                                  "src": "7696:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4098,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "7696:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 4099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7713:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "7696:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7688:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 4102,
                            "name": "erc20Wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3939,
                            "src": "7717:12:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 4103,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3913,
                            "src": "7731:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4094,
                          "name": "_unwrapEth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1789,
                          "src": "7670:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (uint256,uint256,address,address)"
                          }
                        },
                        "id": 4104,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7670:64:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4105,
                      "nodeType": "ExpressionStatement",
                      "src": "7670:64:4"
                    }
                  ]
                },
                "functionSelector": "4a25d94a",
                "id": 4107,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 3918,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3915,
                        "src": "6594:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3919,
                    "modifierName": {
                      "id": 3917,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "6587:6:4"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "6587:16:4"
                  }
                ],
                "name": "swapTokensForExactETH",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3916,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3906,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 4107,
                      "src": "6459:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3905,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6459:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3908,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 4107,
                      "src": "6483:16:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3907,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6483:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3911,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 4107,
                      "src": "6509:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3909,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6509:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3910,
                        "nodeType": "ArrayTypeName",
                        "src": "6509:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3913,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 4107,
                      "src": "6540:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3912,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6540:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3915,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 4107,
                      "src": "6560:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3914,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6560:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6449:130:4"
                },
                "returnParameters": {
                  "id": 3923,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3922,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 4107,
                      "src": "6613:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3920,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "6613:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3921,
                        "nodeType": "ArrayTypeName",
                        "src": "6613:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6612:23:4"
                },
                "scope": 5415,
                "src": "6419:1322:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4262,
                  "nodeType": "Block",
                  "src": "7968:889:4",
                  "statements": [
                    {
                      "assignments": [
                        4128
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4128,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 4262,
                          "src": "7978:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4127,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7978:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4140,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4134,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "8033:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4133,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8025:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4132,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8025:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4135,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8025:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4131,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "8004:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4136,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8004:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "8004:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 4138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8004:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 4130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7996:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4129,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7996:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7996:54:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7978:72:4"
                    },
                    {
                      "assignments": [
                        4142
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4142,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 4262,
                          "src": "8060:20:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4141,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8060:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4154,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4148,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "8120:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4147,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8112:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4146,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8112:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4149,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8112:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4145,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "8091:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8091:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "8091:48:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 4152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8091:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 4144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8083:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4143,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8083:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4153,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8083:59:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8060:82:4"
                    },
                    {
                      "assignments": [
                        4156
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4156,
                          "mutability": "mutable",
                          "name": "ethId",
                          "nodeType": "VariableDeclaration",
                          "scope": 4262,
                          "src": "8152:10:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4155,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "8152:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4168,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4162,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "8199:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4161,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8191:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4160,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8191:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4163,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8191:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4159,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "8170:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4164,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8170:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "ETHEREUM_OBJECT_ID",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7307,
                              "src": "8170:54:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 4166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8170:56:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 4158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8165:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 4157,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "8165:4:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4167,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8165:62:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8152:75:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 4172,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4114,
                              "src": "8270:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4174,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8275:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8270:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 4175,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "8279:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "8279:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 4179,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "8299:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              ],
                              "id": 4178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8291:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4177,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8291:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8291:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 4181,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4109,
                            "src": "8306:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 4169,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "8238:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9448,
                          "src": "8238:31:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 4182,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8238:77:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4183,
                      "nodeType": "ExpressionStatement",
                      "src": "8238:77:4"
                    },
                    {
                      "expression": {
                        "id": 4196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "baseExpression": {
                                "id": 4184,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4114,
                                "src": "8335:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 4186,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4185,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8340:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "8335:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4187,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4109,
                              "src": "8344:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4188,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "8334:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                            "typeString": "tuple(address,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 4190,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4114,
                                "src": "8367:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 4192,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4191,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8372:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8367:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4193,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4109,
                              "src": "8376:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4194,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4142,
                              "src": "8386:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4189,
                            "name": "_wrapErc20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1724,
                            "src": "8356:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$_t_uint256_$",
                              "typeString": "function (address,uint256,address) returns (address,uint256)"
                            }
                          },
                          "id": 4195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8356:43:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                            "typeString": "tuple(address,uint256)"
                          }
                        },
                        "src": "8334:65:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4197,
                      "nodeType": "ExpressionStatement",
                      "src": "8334:65:4"
                    },
                    {
                      "expression": {
                        "id": 4205,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 4198,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4125,
                          "src": "8418:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 4201,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4128,
                              "src": "8457:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4202,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4109,
                              "src": "8466:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4203,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4114,
                              "src": "8476:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "expression": {
                              "id": 4199,
                              "name": "MateriaLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8693,
                              "src": "8428:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                "typeString": "type(library MateriaLibrary)"
                              }
                            },
                            "id": 4200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8607,
                            "src": "8428:28:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 4204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8428:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "8418:63:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 4206,
                      "nodeType": "ExpressionStatement",
                      "src": "8418:63:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 4208,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4125,
                                "src": "8499:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4213,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 4209,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4125,
                                    "src": "8507:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 4210,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "8507:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4211,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8524:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "8507:18:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8499:27:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "id": 4214,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4111,
                              "src": "8530:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8499:43:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 4216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8544:28:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bbbb4868217c0daeb6721d77d471da8aa8a80672b4258dd2de9d7ccde9bf2146",
                              "typeString": "literal_string \"INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_bbbb4868217c0daeb6721d77d471da8aa8a80672b4258dd2de9d7ccde9bf2146",
                              "typeString": "literal_string \"INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 4207,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "8491:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8491:82:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4218,
                      "nodeType": "ExpressionStatement",
                      "src": "8491:82:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 4222,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4114,
                              "src": "8633:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4224,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8638:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8633:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 4227,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4128,
                                "src": "8665:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 4228,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4114,
                                  "src": "8674:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4230,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 4229,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8679:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8674:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 4231,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4114,
                                  "src": "8683:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4233,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 4232,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8688:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8683:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 4225,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "8642:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 4226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "8642:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 4234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8642:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 4235,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4125,
                              "src": "8693:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4237,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8701:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8693:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 4219,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "8592:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "8592:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 4238,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8592:121:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4239,
                      "nodeType": "ExpressionStatement",
                      "src": "8592:121:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 4241,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4128,
                            "src": "8738:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 4242,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4125,
                            "src": "8747:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "id": 4243,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4114,
                            "src": "8756:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 4246,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "8770:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              ],
                              "id": 4245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8762:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4244,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8762:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8762:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4240,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3172,
                          "src": "8732:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (address,uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 4248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8732:44:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4249,
                      "nodeType": "ExpressionStatement",
                      "src": "8732:44:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 4251,
                            "name": "ethId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4156,
                            "src": "8797:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 4252,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4125,
                              "src": "8804:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4257,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4256,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4253,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4125,
                                  "src": "8812:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "8812:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 4255,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8829:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "8812:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8804:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 4258,
                            "name": "erc20Wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4142,
                            "src": "8833:12:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 4259,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4116,
                            "src": "8847:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4250,
                          "name": "_unwrapEth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1789,
                          "src": "8786:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (uint256,uint256,address,address)"
                          }
                        },
                        "id": 4260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8786:64:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4261,
                      "nodeType": "ExpressionStatement",
                      "src": "8786:64:4"
                    }
                  ]
                },
                "functionSelector": "18cbafe5",
                "id": 4263,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 4121,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4118,
                        "src": "7926:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4122,
                    "modifierName": {
                      "id": 4120,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "7919:6:4"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "7919:16:4"
                  }
                ],
                "name": "swapExactTokensForETH",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 4119,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4109,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 4263,
                      "src": "7791:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4108,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7791:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4111,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 4263,
                      "src": "7814:17:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4110,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7814:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4114,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 4263,
                      "src": "7841:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4112,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7841:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4113,
                        "nodeType": "ArrayTypeName",
                        "src": "7841:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4116,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 4263,
                      "src": "7872:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4115,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7872:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4118,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 4263,
                      "src": "7892:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4117,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7892:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7781:130:4"
                },
                "returnParameters": {
                  "id": 4126,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4125,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 4263,
                      "src": "7945:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4123,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7945:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4124,
                        "nodeType": "ArrayTypeName",
                        "src": "7945:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "7944:23:4"
                },
                "scope": 5415,
                "src": "7751:1106:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4497,
                  "nodeType": "Block",
                  "src": "9066:1469:4",
                  "statements": [
                    {
                      "assignments": [
                        4282
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4282,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 4497,
                          "src": "9076:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4281,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9076:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4294,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4288,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "9131:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4287,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9123:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4286,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9123:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4289,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9123:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4285,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "9102:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9102:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "9102:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 4292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9102:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 4284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9094:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4283,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9094:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9094:54:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9076:72:4"
                    },
                    {
                      "assignments": [
                        4296
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4296,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 4497,
                          "src": "9158:20:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4295,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9158:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4308,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4302,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "9218:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4301,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9210:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4300,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9210:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4303,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9210:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4299,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "9189:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9189:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "9189:48:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 4306,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9189:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 4298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9181:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4297,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9181:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4307,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9181:59:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9158:82:4"
                    },
                    {
                      "assignments": [
                        4310
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4310,
                          "mutability": "mutable",
                          "name": "bridgeToken",
                          "nodeType": "VariableDeclaration",
                          "scope": 4497,
                          "src": "9250:19:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4309,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9250:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4322,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4316,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "9309:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4315,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9301:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4314,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9301:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4317,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9301:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4313,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "9280:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9280:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bridgeToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7296,
                              "src": "9280:47:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                "typeString": "function () view external returns (contract IERC20)"
                              }
                            },
                            "id": 4320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9280:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20_$6105",
                              "typeString": "contract IERC20"
                            }
                          ],
                          "id": 4312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9272:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4311,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9272:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9272:58:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9250:80:4"
                    },
                    {
                      "assignments": [
                        4324
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4324,
                          "mutability": "mutable",
                          "name": "ethItemOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 4497,
                          "src": "9349:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 4323,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "9349:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4325,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9349:15:4"
                    },
                    {
                      "assignments": [
                        4327
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4327,
                          "mutability": "mutable",
                          "name": "itemId",
                          "nodeType": "VariableDeclaration",
                          "scope": 4497,
                          "src": "9374:11:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4326,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "9374:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4328,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9374:11:4"
                    },
                    {
                      "assignments": [
                        4330
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4330,
                          "mutability": "mutable",
                          "name": "tokenOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 4497,
                          "src": "9395:16:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4329,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9395:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4331,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9395:16:4"
                    },
                    {
                      "expression": {
                        "id": 4344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 4332,
                              "name": "ethItemOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4324,
                              "src": "9431:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 4333,
                              "name": "itemId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4327,
                              "src": "9443:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4334,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "9430:20:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 4336,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4268,
                                "src": "9464:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 4341,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 4337,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4268,
                                    "src": "9469:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 4338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "9469:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4339,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9483:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "9469:15:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9464:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4342,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4296,
                              "src": "9487:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4335,
                            "name": "_isEthItem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1652,
                            "src": "9453:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (address,address) view returns (bool,uint256)"
                            }
                          },
                          "id": 4343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9453:47:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "src": "9430:70:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4345,
                      "nodeType": "ExpressionStatement",
                      "src": "9430:70:4"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 4347,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "9523:11:4",
                          "subExpression": {
                            "id": 4346,
                            "name": "ethItemOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4324,
                            "src": "9524:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4348,
                            "name": "bridgeToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4310,
                            "src": "9538:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 4349,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4268,
                              "src": "9553:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4354,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4350,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4268,
                                  "src": "9558:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "9558:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 4352,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9572:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "9558:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9553:21:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9538:36:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "9523:51:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 4391,
                      "nodeType": "IfStatement",
                      "src": "9519:274:4",
                      "trueBody": {
                        "id": 4390,
                        "nodeType": "Block",
                        "src": "9576:217:4",
                        "statements": [
                          {
                            "expression": {
                              "id": 4364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4357,
                                "name": "tokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4330,
                                "src": "9590:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "baseExpression": {
                                  "id": 4358,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4268,
                                  "src": "9601:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4363,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4362,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 4359,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4268,
                                      "src": "9606:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 4360,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "9606:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 4361,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9620:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "9606:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9601:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "9590:32:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4365,
                            "nodeType": "ExpressionStatement",
                            "src": "9590:32:4"
                          },
                          {
                            "expression": {
                              "id": 4371,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4366,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4265,
                                "src": "9636:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 4368,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4330,
                                    "src": "9662:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4369,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4265,
                                    "src": "9672:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4367,
                                  "name": "_adjustAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1836,
                                  "src": "9648:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 4370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9648:34:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9636:46:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4372,
                            "nodeType": "ExpressionStatement",
                            "src": "9636:46:4"
                          },
                          {
                            "expression": {
                              "id": 4388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 4373,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4268,
                                  "src": "9696:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4378,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4377,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 4374,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4268,
                                      "src": "9701:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 4375,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "9701:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 4376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9715:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "9701:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "9696:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4385,
                                        "name": "itemId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4327,
                                        "src": "9774:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 4382,
                                            "name": "erc20Wrapper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4296,
                                            "src": "9744:12:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 4381,
                                          "name": "IERC20WrapperV1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6161,
                                          "src": "9728:15:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                            "typeString": "type(contract IERC20WrapperV1)"
                                          }
                                        },
                                        "id": 4383,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9728:29:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                          "typeString": "contract IERC20WrapperV1"
                                        }
                                      },
                                      "id": 4384,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "asInteroperable",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6310,
                                      "src": "9728:45:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                        "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                      }
                                    },
                                    "id": 4386,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9728:53:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  ],
                                  "id": 4380,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9720:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4379,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9720:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9720:62:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "9696:86:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4389,
                            "nodeType": "ExpressionStatement",
                            "src": "9696:86:4"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "id": 4399,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 4392,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4279,
                          "src": "9811:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 4395,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4282,
                              "src": "9849:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4396,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4265,
                              "src": "9858:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4397,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4268,
                              "src": "9869:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "expression": {
                              "id": 4393,
                              "name": "MateriaLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8693,
                              "src": "9821:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                "typeString": "type(library MateriaLibrary)"
                              }
                            },
                            "id": 4394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8692,
                            "src": "9821:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 4398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9821:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "9811:63:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 4400,
                      "nodeType": "ExpressionStatement",
                      "src": "9811:63:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4407,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 4402,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4279,
                                "src": "9892:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4404,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4403,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9900:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9892:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "expression": {
                                "id": 4405,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "9906:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "src": "9906:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9892:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4558434553534956455f494e5055545f414d4f554e54",
                            "id": 4408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9917:24:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1ff989705ae00849337ffb650a4f4c5df36920f3e768f284b12a852a5ff9bbdb",
                              "typeString": "literal_string \"EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1ff989705ae00849337ffb650a4f4c5df36920f3e768f284b12a852a5ff9bbdb",
                              "typeString": "literal_string \"EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 4401,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "9884:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9884:58:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4410,
                      "nodeType": "ExpressionStatement",
                      "src": "9884:58:4"
                    },
                    {
                      "expression": {
                        "id": 4420,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 4411,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4268,
                            "src": "9961:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 4413,
                          "indexExpression": {
                            "hexValue": "30",
                            "id": 4412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9966:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "9961:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 4415,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4279,
                                "src": "9980:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4417,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9988:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9980:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4418,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4296,
                              "src": "9992:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4414,
                            "name": "_wrapEth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1810,
                            "src": "9971:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$",
                              "typeString": "function (uint256,address) returns (address)"
                            }
                          },
                          "id": 4419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9971:34:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "9961:44:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 4421,
                      "nodeType": "ExpressionStatement",
                      "src": "9961:44:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 4425,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4268,
                              "src": "10065:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4427,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10070:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10065:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 4430,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4282,
                                "src": "10097:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 4431,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4268,
                                  "src": "10106:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4433,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 4432,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10111:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10106:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 4434,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4268,
                                  "src": "10115:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4436,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 4435,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10120:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10115:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 4428,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "10074:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 4429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "10074:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 4437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10074:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 4438,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4279,
                              "src": "10125:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4440,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4439,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10133:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10125:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 4422,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "10024:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "10024:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 4441,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10024:121:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4442,
                      "nodeType": "ExpressionStatement",
                      "src": "10024:121:4"
                    },
                    {
                      "condition": {
                        "id": 4443,
                        "name": "ethItemOut",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4324,
                        "src": "10168:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 4475,
                        "nodeType": "Block",
                        "src": "10244:160:4",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4453,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4282,
                                  "src": "10264:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4454,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4279,
                                  "src": "10273:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 4455,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4268,
                                  "src": "10282:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 4458,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967268,
                                      "src": "10296:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                        "typeString": "contract MateriaSwapper"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                        "typeString": "contract MateriaSwapper"
                                      }
                                    ],
                                    "id": 4457,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10288:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 4456,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10288:7:4",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 4459,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10288:13:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4452,
                                "name": "_swap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "10258:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                  "typeString": "function (address,uint256[] memory,address[] memory,address)"
                                }
                              },
                              "id": 4460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10258:44:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4461,
                            "nodeType": "ExpressionStatement",
                            "src": "10258:44:4"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4463,
                                  "name": "itemId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4327,
                                  "src": "10329:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 4464,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4330,
                                  "src": "10337:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 4465,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4279,
                                    "src": "10347:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 4470,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4469,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 4466,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4279,
                                        "src": "10355:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 4467,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "10355:14:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 4468,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10372:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "10355:18:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10347:27:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 4471,
                                  "name": "erc20Wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4296,
                                  "src": "10376:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4472,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4270,
                                  "src": "10390:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4462,
                                "name": "_unwrapErc20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1762,
                                "src": "10316:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                                  "typeString": "function (uint256,address,uint256,address,address)"
                                }
                              },
                              "id": 4473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10316:77:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4474,
                            "nodeType": "ExpressionStatement",
                            "src": "10316:77:4"
                          }
                        ]
                      },
                      "id": 4476,
                      "nodeType": "IfStatement",
                      "src": "10164:240:4",
                      "trueBody": {
                        "id": 4451,
                        "nodeType": "Block",
                        "src": "10180:58:4",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4445,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4282,
                                  "src": "10200:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4446,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4279,
                                  "src": "10209:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 4447,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4268,
                                  "src": "10218:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "id": 4448,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4270,
                                  "src": "10224:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4444,
                                "name": "_swap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "10194:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                  "typeString": "function (address,uint256[] memory,address[] memory,address)"
                                }
                              },
                              "id": 4449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10194:33:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4450,
                            "nodeType": "ExpressionStatement",
                            "src": "10194:33:4"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4477,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "10426:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "src": "10426:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "baseExpression": {
                            "id": 4479,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4279,
                            "src": "10438:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 4481,
                          "indexExpression": {
                            "hexValue": "30",
                            "id": 4480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10446:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10438:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10426:22:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 4496,
                      "nodeType": "IfStatement",
                      "src": "10422:106:4",
                      "trueBody": {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 4486,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "10493:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "10493:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4488,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967281,
                                  "src": "10505:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4489,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "src": "10505:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "baseExpression": {
                                  "id": 4490,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4279,
                                  "src": "10517:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4492,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 4491,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10525:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10517:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10505:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 4483,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9474,
                              "src": "10462:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 4485,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9473,
                            "src": "10462:30:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 4494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10462:66:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4495,
                        "nodeType": "ExpressionStatement",
                        "src": "10462:66:4"
                      }
                    }
                  ]
                },
                "functionSelector": "fb3bdb41",
                "id": 4498,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 4275,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4272,
                        "src": "9024:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4276,
                    "modifierName": {
                      "id": 4274,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "9017:6:4"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "9017:16:4"
                  }
                ],
                "name": "swapETHForExactTokens",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 4273,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4265,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 4498,
                      "src": "8907:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4264,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8907:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4268,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 4498,
                      "src": "8931:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4266,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8931:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4267,
                        "nodeType": "ArrayTypeName",
                        "src": "8931:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4270,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 4498,
                      "src": "8962:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4269,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8962:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4272,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 4498,
                      "src": "8982:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4271,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8982:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "8897:104:4"
                },
                "returnParameters": {
                  "id": 4280,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4279,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 4498,
                      "src": "9043:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4277,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9043:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4278,
                        "nodeType": "ArrayTypeName",
                        "src": "9043:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "9042:23:4"
                },
                "scope": 5415,
                "src": "8867:1668:4",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 4701,
                  "nodeType": "Block",
                  "src": "10733:1274:4",
                  "statements": [
                    {
                      "assignments": [
                        4516
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4516,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 4701,
                          "src": "10743:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4515,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10743:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4528,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4522,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "10798:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4521,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10790:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4520,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10790:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4523,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10790:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4519,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "10769:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10769:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4525,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "10769:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 4526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10769:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 4518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10761:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4517,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10761:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4527,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10761:54:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10743:72:4"
                    },
                    {
                      "assignments": [
                        4530
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4530,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 4701,
                          "src": "10825:20:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4529,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10825:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4542,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4536,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "10885:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4535,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10877:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4534,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10877:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4537,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10877:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4533,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "10856:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10856:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "10856:48:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 4540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10856:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 4532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10848:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4531,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10848:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10848:59:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10825:82:4"
                    },
                    {
                      "assignments": [
                        4544
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4544,
                          "mutability": "mutable",
                          "name": "ethItemOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 4701,
                          "src": "10918:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 4543,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "10918:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4545,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10918:15:4"
                    },
                    {
                      "assignments": [
                        4547
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4547,
                          "mutability": "mutable",
                          "name": "itemId",
                          "nodeType": "VariableDeclaration",
                          "scope": 4701,
                          "src": "10943:11:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4546,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "10943:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4548,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10943:11:4"
                    },
                    {
                      "assignments": [
                        4550
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4550,
                          "mutability": "mutable",
                          "name": "tokenOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 4701,
                          "src": "10964:16:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4549,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10964:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4551,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10964:16:4"
                    },
                    {
                      "expression": {
                        "id": 4564,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 4552,
                              "name": "ethItemOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4544,
                              "src": "11000:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 4553,
                              "name": "itemId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4547,
                              "src": "11012:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4554,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "10999:20:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 4556,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4505,
                                "src": "11033:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 4561,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4560,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 4557,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4505,
                                    "src": "11038:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 4558,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "11038:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4559,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11052:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "11038:15:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11033:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4562,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4530,
                              "src": "11056:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4555,
                            "name": "_isEthItem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1652,
                            "src": "11022:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (address,address) view returns (bool,uint256)"
                            }
                          },
                          "id": 4563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11022:47:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "src": "10999:70:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4565,
                      "nodeType": "ExpressionStatement",
                      "src": "10999:70:4"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 4567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "11092:11:4",
                          "subExpression": {
                            "id": 4566,
                            "name": "ethItemOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4544,
                            "src": "11093:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 4573,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967268,
                                            "src": "11144:4:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                              "typeString": "contract MateriaSwapper"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                              "typeString": "contract MateriaSwapper"
                                            }
                                          ],
                                          "id": 4572,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "11136:7:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 4571,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "11136:7:4",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4574,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11136:13:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 4570,
                                      "name": "IMateriaOrchestrator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7665,
                                      "src": "11115:20:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                        "typeString": "type(contract IMateriaOrchestrator)"
                                      }
                                    },
                                    "id": 4575,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11115:35:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                      "typeString": "contract IMateriaOrchestrator"
                                    }
                                  },
                                  "id": 4576,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "bridgeToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7296,
                                  "src": "11115:47:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                    "typeString": "function () view external returns (contract IERC20)"
                                  }
                                },
                                "id": 4577,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11115:49:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$6105",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$6105",
                                  "typeString": "contract IERC20"
                                }
                              ],
                              "id": 4569,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11107:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4568,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11107:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11107:58:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 4579,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4505,
                              "src": "11169:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4584,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4580,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4505,
                                  "src": "11174:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "11174:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 4582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11188:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "11174:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11169:21:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11107:83:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "11092:98:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 4621,
                      "nodeType": "IfStatement",
                      "src": "11088:327:4",
                      "trueBody": {
                        "id": 4620,
                        "nodeType": "Block",
                        "src": "11192:223:4",
                        "statements": [
                          {
                            "expression": {
                              "id": 4594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4587,
                                "name": "tokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4550,
                                "src": "11206:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "baseExpression": {
                                  "id": 4588,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4505,
                                  "src": "11217:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4593,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4592,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 4589,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4505,
                                      "src": "11222:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 4590,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "11222:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 4591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11236:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "11222:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11217:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "11206:32:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4595,
                            "nodeType": "ExpressionStatement",
                            "src": "11206:32:4"
                          },
                          {
                            "expression": {
                              "id": 4601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4596,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4502,
                                "src": "11252:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 4598,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4550,
                                    "src": "11281:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4599,
                                    "name": "amountOutMin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4502,
                                    "src": "11291:12:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4597,
                                  "name": "_adjustAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1836,
                                  "src": "11267:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 4600,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11267:37:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11252:52:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4602,
                            "nodeType": "ExpressionStatement",
                            "src": "11252:52:4"
                          },
                          {
                            "expression": {
                              "id": 4618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 4603,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4505,
                                  "src": "11318:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4608,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4607,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 4604,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4505,
                                      "src": "11323:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 4605,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "11323:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 4606,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11337:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "11323:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "11318:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4615,
                                        "name": "itemId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4547,
                                        "src": "11396:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 4612,
                                            "name": "erc20Wrapper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4530,
                                            "src": "11366:12:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 4611,
                                          "name": "IERC20WrapperV1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6161,
                                          "src": "11350:15:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                            "typeString": "type(contract IERC20WrapperV1)"
                                          }
                                        },
                                        "id": 4613,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11350:29:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                          "typeString": "contract IERC20WrapperV1"
                                        }
                                      },
                                      "id": 4614,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "asInteroperable",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6310,
                                      "src": "11350:45:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                        "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                      }
                                    },
                                    "id": 4616,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11350:53:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  ],
                                  "id": 4610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11342:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4609,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11342:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11342:62:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "11318:86:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4619,
                            "nodeType": "ExpressionStatement",
                            "src": "11318:86:4"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        4626
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4626,
                          "mutability": "mutable",
                          "name": "amounts",
                          "nodeType": "VariableDeclaration",
                          "scope": 4701,
                          "src": "11433:21:4",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 4624,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "11433:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4625,
                            "nodeType": "ArrayTypeName",
                            "src": "11433:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                              "typeString": "uint256[]"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4633,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 4629,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4516,
                            "src": "11486:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 4630,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4500,
                            "src": "11495:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 4631,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4505,
                            "src": "11505:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "expression": {
                            "id": 4627,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "11457:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 4628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountsOut",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8607,
                          "src": "11457:28:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                          }
                        },
                        "id": 4632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11457:53:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11433:77:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4642,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 4635,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4626,
                                "src": "11528:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4640,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4639,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 4636,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4626,
                                    "src": "11536:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 4637,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "11536:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4638,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11553:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "11536:18:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11528:27:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "id": 4641,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4502,
                              "src": "11559:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11528:43:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 4643,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11573:28:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bbbb4868217c0daeb6721d77d471da8aa8a80672b4258dd2de9d7ccde9bf2146",
                              "typeString": "literal_string \"INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_bbbb4868217c0daeb6721d77d471da8aa8a80672b4258dd2de9d7ccde9bf2146",
                              "typeString": "literal_string \"INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 4634,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "11520:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11520:82:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4645,
                      "nodeType": "ExpressionStatement",
                      "src": "11520:82:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 4649,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4505,
                              "src": "11662:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4651,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11667:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11662:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 4654,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4516,
                                "src": "11694:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 4655,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4505,
                                  "src": "11703:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4657,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 4656,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11708:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11703:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 4658,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4505,
                                  "src": "11712:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4660,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 4659,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11717:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11712:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 4652,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "11671:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 4653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "11671:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 4661,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11671:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 4662,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4626,
                              "src": "11722:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4664,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11730:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11722:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 4646,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "11621:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "11621:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 4665,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11621:121:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4666,
                      "nodeType": "ExpressionStatement",
                      "src": "11621:121:4"
                    },
                    {
                      "condition": {
                        "id": 4667,
                        "name": "ethItemOut",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4544,
                        "src": "11765:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 4699,
                        "nodeType": "Block",
                        "src": "11841:160:4",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4677,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4516,
                                  "src": "11861:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4678,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4626,
                                  "src": "11870:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 4679,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4505,
                                  "src": "11879:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 4682,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967268,
                                      "src": "11893:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                        "typeString": "contract MateriaSwapper"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                        "typeString": "contract MateriaSwapper"
                                      }
                                    ],
                                    "id": 4681,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "11885:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 4680,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "11885:7:4",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 4683,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11885:13:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4676,
                                "name": "_swap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "11855:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                  "typeString": "function (address,uint256[] memory,address[] memory,address)"
                                }
                              },
                              "id": 4684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11855:44:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4685,
                            "nodeType": "ExpressionStatement",
                            "src": "11855:44:4"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4687,
                                  "name": "itemId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4547,
                                  "src": "11926:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 4688,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4550,
                                  "src": "11934:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 4689,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4626,
                                    "src": "11944:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 4694,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4693,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 4690,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4626,
                                        "src": "11952:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 4691,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "11952:14:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 4692,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11969:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "11952:18:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11944:27:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 4695,
                                  "name": "erc20Wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4530,
                                  "src": "11973:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4696,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4507,
                                  "src": "11987:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4686,
                                "name": "_unwrapErc20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1762,
                                "src": "11913:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                                  "typeString": "function (uint256,address,uint256,address,address)"
                                }
                              },
                              "id": 4697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11913:77:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4698,
                            "nodeType": "ExpressionStatement",
                            "src": "11913:77:4"
                          }
                        ]
                      },
                      "id": 4700,
                      "nodeType": "IfStatement",
                      "src": "11761:240:4",
                      "trueBody": {
                        "id": 4675,
                        "nodeType": "Block",
                        "src": "11777:58:4",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4669,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4516,
                                  "src": "11797:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4670,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4626,
                                  "src": "11806:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 4671,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4505,
                                  "src": "11815:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "id": 4672,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4507,
                                  "src": "11821:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4668,
                                "name": "_swap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "11791:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                  "typeString": "function (address,uint256[] memory,address[] memory,address)"
                                }
                              },
                              "id": 4673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11791:33:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4674,
                            "nodeType": "ExpressionStatement",
                            "src": "11791:33:4"
                          }
                        ]
                      }
                    }
                  ]
                },
                "id": 4702,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 4512,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4509,
                        "src": "10723:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4513,
                    "modifierName": {
                      "id": 4511,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "10716:6:4"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "10716:16:4"
                  }
                ],
                "name": "swapExactItemsForTokens",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 4510,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4500,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 4702,
                      "src": "10587:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4499,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10587:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4502,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 4702,
                      "src": "10610:17:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4501,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10610:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4505,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 4702,
                      "src": "10637:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4503,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10637:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4504,
                        "nodeType": "ArrayTypeName",
                        "src": "10637:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4507,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 4702,
                      "src": "10668:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4506,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10668:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4509,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 4702,
                      "src": "10688:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4508,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10688:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "10577:130:4"
                },
                "returnParameters": {
                  "id": 4514,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "10733:0:4"
                },
                "scope": 5415,
                "src": "10545:1462:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 4929,
                  "nodeType": "Block",
                  "src": "12227:1425:4",
                  "statements": [
                    {
                      "assignments": [
                        4722
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4722,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 4929,
                          "src": "12237:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4721,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12237:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4734,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4728,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "12292:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4727,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12284:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4726,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12284:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4729,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12284:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4725,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "12263:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12263:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "12263:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 4732,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12263:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 4724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "12255:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4723,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12255:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12255:54:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12237:72:4"
                    },
                    {
                      "assignments": [
                        4736
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4736,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 4929,
                          "src": "12319:20:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4735,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12319:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4748,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4742,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "12379:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4741,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12371:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4740,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12371:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4743,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12371:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4739,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "12350:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12350:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "12350:48:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 4746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12350:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 4738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "12342:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4737,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12342:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12342:59:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12319:82:4"
                    },
                    {
                      "assignments": [
                        4750
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4750,
                          "mutability": "mutable",
                          "name": "ethItemOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 4929,
                          "src": "12412:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 4749,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "12412:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4751,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12412:15:4"
                    },
                    {
                      "assignments": [
                        4753
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4753,
                          "mutability": "mutable",
                          "name": "itemId",
                          "nodeType": "VariableDeclaration",
                          "scope": 4929,
                          "src": "12437:11:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4752,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "12437:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4754,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12437:11:4"
                    },
                    {
                      "assignments": [
                        4756
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4756,
                          "mutability": "mutable",
                          "name": "tokenOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 4929,
                          "src": "12458:16:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4755,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12458:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4757,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12458:16:4"
                    },
                    {
                      "expression": {
                        "id": 4770,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 4758,
                              "name": "ethItemOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4750,
                              "src": "12494:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 4759,
                              "name": "itemId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4753,
                              "src": "12506:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4760,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "12493:20:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 4762,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4709,
                                "src": "12527:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 4767,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 4763,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4709,
                                    "src": "12532:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 4764,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "12532:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12546:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12532:15:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12527:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4768,
                              "name": "erc20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4736,
                              "src": "12550:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4761,
                            "name": "_isEthItem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1652,
                            "src": "12516:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (address,address) view returns (bool,uint256)"
                            }
                          },
                          "id": 4769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12516:47:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "src": "12493:70:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4771,
                      "nodeType": "ExpressionStatement",
                      "src": "12493:70:4"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4792,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 4773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "12586:11:4",
                          "subExpression": {
                            "id": 4772,
                            "name": "ethItemOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4750,
                            "src": "12587:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 4779,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967268,
                                            "src": "12638:4:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                              "typeString": "contract MateriaSwapper"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                              "typeString": "contract MateriaSwapper"
                                            }
                                          ],
                                          "id": 4778,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "12630:7:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 4777,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "12630:7:4",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4780,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12630:13:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 4776,
                                      "name": "IMateriaOrchestrator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7665,
                                      "src": "12609:20:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                        "typeString": "type(contract IMateriaOrchestrator)"
                                      }
                                    },
                                    "id": 4781,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12609:35:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                      "typeString": "contract IMateriaOrchestrator"
                                    }
                                  },
                                  "id": 4782,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "bridgeToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7296,
                                  "src": "12609:47:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$6105_$",
                                    "typeString": "function () view external returns (contract IERC20)"
                                  }
                                },
                                "id": 4783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12609:49:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$6105",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$6105",
                                  "typeString": "contract IERC20"
                                }
                              ],
                              "id": 4775,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12601:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4774,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12601:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4784,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12601:58:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 4785,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4709,
                              "src": "12663:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4790,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4786,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4709,
                                  "src": "12668:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "12668:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 4788,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12682:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "12668:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12663:21:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12601:83:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12586:98:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 4827,
                      "nodeType": "IfStatement",
                      "src": "12582:321:4",
                      "trueBody": {
                        "id": 4826,
                        "nodeType": "Block",
                        "src": "12686:217:4",
                        "statements": [
                          {
                            "expression": {
                              "id": 4800,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4793,
                                "name": "tokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4756,
                                "src": "12700:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "baseExpression": {
                                  "id": 4794,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4709,
                                  "src": "12711:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4799,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4798,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 4795,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4709,
                                      "src": "12716:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 4796,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "12716:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 4797,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12730:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "12716:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12711:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "12700:32:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4801,
                            "nodeType": "ExpressionStatement",
                            "src": "12700:32:4"
                          },
                          {
                            "expression": {
                              "id": 4807,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4802,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4704,
                                "src": "12746:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 4804,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4756,
                                    "src": "12772:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4805,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4704,
                                    "src": "12782:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4803,
                                  "name": "_adjustAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1836,
                                  "src": "12758:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 4806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12758:34:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12746:46:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4808,
                            "nodeType": "ExpressionStatement",
                            "src": "12746:46:4"
                          },
                          {
                            "expression": {
                              "id": 4824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 4809,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4709,
                                  "src": "12806:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4814,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4813,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 4810,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4709,
                                      "src": "12811:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 4811,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "12811:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 4812,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12825:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "12811:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "12806:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4821,
                                        "name": "itemId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4753,
                                        "src": "12884:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 4818,
                                            "name": "erc20Wrapper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4736,
                                            "src": "12854:12:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 4817,
                                          "name": "IERC20WrapperV1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6161,
                                          "src": "12838:15:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                            "typeString": "type(contract IERC20WrapperV1)"
                                          }
                                        },
                                        "id": 4819,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12838:29:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                                          "typeString": "contract IERC20WrapperV1"
                                        }
                                      },
                                      "id": 4820,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "asInteroperable",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6310,
                                      "src": "12838:45:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IEthItemInteroperableInterface_$6250_$",
                                        "typeString": "function (uint256) view external returns (contract IEthItemInteroperableInterface)"
                                      }
                                    },
                                    "id": 4822,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12838:53:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                                      "typeString": "contract IEthItemInteroperableInterface"
                                    }
                                  ],
                                  "id": 4816,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12830:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4815,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12830:7:4",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12830:62:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "12806:86:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4825,
                            "nodeType": "ExpressionStatement",
                            "src": "12806:86:4"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        4832
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4832,
                          "mutability": "mutable",
                          "name": "amounts",
                          "nodeType": "VariableDeclaration",
                          "scope": 4929,
                          "src": "12921:21:4",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 4830,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "12921:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4831,
                            "nodeType": "ArrayTypeName",
                            "src": "12921:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                              "typeString": "uint256[]"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4839,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 4835,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4722,
                            "src": "12973:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 4836,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4704,
                            "src": "12982:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 4837,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4709,
                            "src": "12993:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "expression": {
                            "id": 4833,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "12945:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 4834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountsIn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8692,
                          "src": "12945:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                          }
                        },
                        "id": 4838,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12945:53:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12921:77:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 4841,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4832,
                                "src": "13016:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4843,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4842,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13024:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13016:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "id": 4844,
                              "name": "amountInMax",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4706,
                              "src": "13030:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13016:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4558434553534956455f494e5055545f414d4f554e54",
                            "id": 4846,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13043:24:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1ff989705ae00849337ffb650a4f4c5df36920f3e768f284b12a852a5ff9bbdb",
                              "typeString": "literal_string \"EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1ff989705ae00849337ffb650a4f4c5df36920f3e768f284b12a852a5ff9bbdb",
                              "typeString": "literal_string \"EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 4840,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "13008:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4847,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13008:60:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4848,
                      "nodeType": "ExpressionStatement",
                      "src": "13008:60:4"
                    },
                    {
                      "id": 4873,
                      "nodeType": "Block",
                      "src": "13087:161:4",
                      "statements": [
                        {
                          "assignments": [
                            4850
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4850,
                              "mutability": "mutable",
                              "name": "amountBack",
                              "nodeType": "VariableDeclaration",
                              "scope": 4873,
                              "src": "13097:15:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4849,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "13097:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4851,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "13097:15:4"
                        },
                        {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "id": 4858,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 4852,
                                    "name": "amountBack",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4850,
                                    "src": "13127:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4857,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4853,
                                      "name": "amountInMax",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4706,
                                      "src": "13140:11:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "baseExpression": {
                                        "id": 4854,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4832,
                                        "src": "13154:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 4856,
                                      "indexExpression": {
                                        "hexValue": "30",
                                        "id": 4855,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13162:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "13154:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13140:24:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "13127:37:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 4859,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "13126:39:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 4860,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13168:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "13126:43:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 4872,
                          "nodeType": "IfStatement",
                          "src": "13122:115:4",
                          "trueBody": {
                            "expression": {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 4865,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4709,
                                    "src": "13211:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 4867,
                                  "indexExpression": {
                                    "hexValue": "30",
                                    "id": 4866,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13216:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13211:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4868,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4713,
                                  "src": "13220:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4869,
                                  "name": "amountBack",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4850,
                                  "src": "13226:10:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 4862,
                                  "name": "TransferHelper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9474,
                                  "src": "13183:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                                    "typeString": "type(library TransferHelper)"
                                  }
                                },
                                "id": 4864,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeTransfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9402,
                                "src": "13183:27:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256)"
                                }
                              },
                              "id": 4870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13183:54:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4871,
                            "nodeType": "ExpressionStatement",
                            "src": "13183:54:4"
                          }
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 4877,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4709,
                              "src": "13307:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4879,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13312:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13307:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 4882,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4722,
                                "src": "13339:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 4883,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4709,
                                  "src": "13348:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4885,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 4884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13353:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13348:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 4886,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4709,
                                  "src": "13357:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4888,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 4887,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13362:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13357:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 4880,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "13316:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 4881,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "13316:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 4889,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13316:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 4890,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "13367:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4892,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13375:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13367:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 4874,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "13266:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "13266:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 4893,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13266:121:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4894,
                      "nodeType": "ExpressionStatement",
                      "src": "13266:121:4"
                    },
                    {
                      "condition": {
                        "id": 4895,
                        "name": "ethItemOut",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4750,
                        "src": "13410:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 4927,
                        "nodeType": "Block",
                        "src": "13486:160:4",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4905,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4722,
                                  "src": "13506:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4906,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4832,
                                  "src": "13515:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 4907,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4709,
                                  "src": "13524:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 4910,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967268,
                                      "src": "13538:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                        "typeString": "contract MateriaSwapper"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                        "typeString": "contract MateriaSwapper"
                                      }
                                    ],
                                    "id": 4909,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13530:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 4908,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13530:7:4",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 4911,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13530:13:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4904,
                                "name": "_swap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "13500:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                  "typeString": "function (address,uint256[] memory,address[] memory,address)"
                                }
                              },
                              "id": 4912,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13500:44:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4913,
                            "nodeType": "ExpressionStatement",
                            "src": "13500:44:4"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4915,
                                  "name": "itemId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4753,
                                  "src": "13571:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 4916,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4756,
                                  "src": "13579:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 4917,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4832,
                                    "src": "13589:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 4922,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4921,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 4918,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4832,
                                        "src": "13597:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 4919,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "13597:14:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 4920,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13614:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "13597:18:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13589:27:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 4923,
                                  "name": "erc20Wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4736,
                                  "src": "13618:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4924,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4711,
                                  "src": "13632:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4914,
                                "name": "_unwrapErc20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1762,
                                "src": "13558:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                                  "typeString": "function (uint256,address,uint256,address,address)"
                                }
                              },
                              "id": 4925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13558:77:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4926,
                            "nodeType": "ExpressionStatement",
                            "src": "13558:77:4"
                          }
                        ]
                      },
                      "id": 4928,
                      "nodeType": "IfStatement",
                      "src": "13406:240:4",
                      "trueBody": {
                        "id": 4903,
                        "nodeType": "Block",
                        "src": "13422:58:4",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4897,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4722,
                                  "src": "13442:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4898,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4832,
                                  "src": "13451:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "id": 4899,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4709,
                                  "src": "13460:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "id": 4900,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4711,
                                  "src": "13466:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4896,
                                "name": "_swap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "13436:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                  "typeString": "function (address,uint256[] memory,address[] memory,address)"
                                }
                              },
                              "id": 4901,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13436:33:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4902,
                            "nodeType": "ExpressionStatement",
                            "src": "13436:33:4"
                          }
                        ]
                      }
                    }
                  ]
                },
                "id": 4930,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 4718,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4715,
                        "src": "12217:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4719,
                    "modifierName": {
                      "id": 4717,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "12210:6:4"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "12210:16:4"
                  }
                ],
                "name": "swapItemsForExactTokens",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 4716,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4704,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 4930,
                      "src": "12059:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4703,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12059:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4706,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 4930,
                      "src": "12083:16:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4705,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12083:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4709,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 4930,
                      "src": "12109:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4707,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12109:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4708,
                        "nodeType": "ArrayTypeName",
                        "src": "12109:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4711,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 4930,
                      "src": "12140:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4710,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12140:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4713,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 4930,
                      "src": "12160:12:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4712,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12160:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4715,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 4930,
                      "src": "12182:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4714,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12182:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "12049:152:4"
                },
                "returnParameters": {
                  "id": 4720,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "12227:0:4"
                },
                "scope": 5415,
                "src": "12017:1635:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 5069,
                  "nodeType": "Block",
                  "src": "13847:854:4",
                  "statements": [
                    {
                      "assignments": [
                        4948
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4948,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 5069,
                          "src": "13857:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4947,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "13857:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4960,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4954,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "13912:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4953,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13904:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4952,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13904:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4955,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13904:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4951,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "13883:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4956,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13883:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "13883:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 4958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13883:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 4950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "13875:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4949,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "13875:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13875:54:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "13857:72:4"
                    },
                    {
                      "assignments": [
                        4962
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4962,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 5069,
                          "src": "13939:20:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4961,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "13939:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4974,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4968,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "13999:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4967,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13991:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4966,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13991:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4969,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13991:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4965,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "13970:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4970,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13970:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "13970:48:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 4972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13970:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 4964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "13962:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4963,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "13962:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4973,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13962:59:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "13939:82:4"
                    },
                    {
                      "assignments": [
                        4976
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4976,
                          "mutability": "mutable",
                          "name": "ethId",
                          "nodeType": "VariableDeclaration",
                          "scope": 5069,
                          "src": "14031:10:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4975,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "14031:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 4988,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4982,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "14078:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 4981,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "14070:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4980,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14070:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4983,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14070:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4979,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "14049:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 4984,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14049:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 4985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "ETHEREUM_OBJECT_ID",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7307,
                              "src": "14049:54:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 4986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14049:56:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 4978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "14044:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 4977,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "14044:4:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4987,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14044:62:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "14031:75:4"
                    },
                    {
                      "assignments": [
                        4993
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4993,
                          "mutability": "mutable",
                          "name": "amounts",
                          "nodeType": "VariableDeclaration",
                          "scope": 5069,
                          "src": "14117:21:4",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 4991,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "14117:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4992,
                            "nodeType": "ArrayTypeName",
                            "src": "14117:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                              "typeString": "uint256[]"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5000,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 4996,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4948,
                            "src": "14170:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 4997,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4932,
                            "src": "14179:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 4998,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4937,
                            "src": "14189:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "expression": {
                            "id": 4994,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "14141:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 4995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountsOut",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8607,
                          "src": "14141:28:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                          }
                        },
                        "id": 4999,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14141:53:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "14117:77:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 5002,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4993,
                                "src": "14212:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 5007,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 5003,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4993,
                                    "src": "14220:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 5004,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "14220:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 5005,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14237:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "14220:18:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14212:27:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "id": 5008,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4934,
                              "src": "14243:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14212:43:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 5010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14257:28:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bbbb4868217c0daeb6721d77d471da8aa8a80672b4258dd2de9d7ccde9bf2146",
                              "typeString": "literal_string \"INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_bbbb4868217c0daeb6721d77d471da8aa8a80672b4258dd2de9d7ccde9bf2146",
                              "typeString": "literal_string \"INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 5001,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "14204:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5011,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14204:82:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5012,
                      "nodeType": "ExpressionStatement",
                      "src": "14204:82:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 5016,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4937,
                              "src": "14346:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 5018,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 5017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14351:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14346:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 5021,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4948,
                                "src": "14378:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 5022,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4937,
                                  "src": "14387:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 5024,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 5023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14392:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14387:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 5025,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4937,
                                  "src": "14396:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 5027,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 5026,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14401:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14396:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 5019,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "14355:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 5020,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "14355:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 5028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14355:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 5029,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4993,
                              "src": "14406:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 5031,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 5030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14414:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14406:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5013,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "14305:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 5015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "14305:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 5032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14305:121:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5033,
                      "nodeType": "ExpressionStatement",
                      "src": "14305:121:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5035,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4948,
                            "src": "14451:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5036,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4993,
                            "src": "14460:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "id": 5037,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4937,
                            "src": "14469:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 5040,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "14483:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              ],
                              "id": 5039,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14475:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5038,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14475:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5041,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14475:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 5034,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3172,
                          "src": "14445:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (address,uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 5042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14445:44:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5043,
                      "nodeType": "ExpressionStatement",
                      "src": "14445:44:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5048,
                            "name": "ethId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4976,
                            "src": "14556:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 5049,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4993,
                              "src": "14575:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 5054,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 5050,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4993,
                                  "src": "14583:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "14583:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 5052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14600:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "14583:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14575:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 5045,
                                "name": "erc20Wrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4962,
                                "src": "14524:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5044,
                              "name": "IERC20WrapperV1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6161,
                              "src": "14508:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "type(contract IERC20WrapperV1)"
                              }
                            },
                            "id": 5046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14508:29:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          },
                          "id": 5047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "burn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6341,
                          "src": "14508:34:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (uint256,uint256) external"
                          }
                        },
                        "id": 5055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14508:104:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5056,
                      "nodeType": "ExpressionStatement",
                      "src": "14508:104:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5060,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4939,
                            "src": "14662:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 5061,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4993,
                              "src": "14666:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 5066,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 5062,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4993,
                                  "src": "14674:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "14674:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 5064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14691:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "14674:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14666:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5057,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "14631:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 5059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9473,
                          "src": "14631:30:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 5067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14631:63:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5068,
                      "nodeType": "ExpressionStatement",
                      "src": "14631:63:4"
                    }
                  ]
                },
                "id": 5070,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 4944,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4941,
                        "src": "13837:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4945,
                    "modifierName": {
                      "id": 4943,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "13830:6:4"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "13830:16:4"
                  }
                ],
                "name": "swapExactItemsForEth",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 4942,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4932,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 5070,
                      "src": "13701:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4931,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13701:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4934,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 5070,
                      "src": "13724:17:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4933,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13724:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4937,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 5070,
                      "src": "13751:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4935,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13751:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4936,
                        "nodeType": "ArrayTypeName",
                        "src": "13751:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4939,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 5070,
                      "src": "13782:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4938,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13782:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4941,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 5070,
                      "src": "13802:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4940,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13802:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "13691:130:4"
                },
                "returnParameters": {
                  "id": 4946,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "13847:0:4"
                },
                "scope": 5415,
                "src": "13662:1039:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 5233,
                  "nodeType": "Block",
                  "src": "14918:1011:4",
                  "statements": [
                    {
                      "assignments": [
                        5090
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5090,
                          "mutability": "mutable",
                          "name": "factory",
                          "nodeType": "VariableDeclaration",
                          "scope": 5233,
                          "src": "14928:15:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 5089,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "14928:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5102,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 5096,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "14983:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 5095,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "14975:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5094,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14975:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5097,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14975:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5093,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "14954:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 5098,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14954:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 5099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "factory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7290,
                              "src": "14954:43:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IMateriaFactory_$7180_$",
                                "typeString": "function () view external returns (contract IMateriaFactory)"
                              }
                            },
                            "id": 5100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14954:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                              "typeString": "contract IMateriaFactory"
                            }
                          ],
                          "id": 5092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "14946:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 5091,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "14946:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 5101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14946:54:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "14928:72:4"
                    },
                    {
                      "assignments": [
                        5104
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5104,
                          "mutability": "mutable",
                          "name": "erc20Wrapper",
                          "nodeType": "VariableDeclaration",
                          "scope": 5233,
                          "src": "15010:20:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 5103,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "15010:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5116,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 5110,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "15070:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 5109,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15062:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5108,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15062:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5111,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15062:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5107,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "15041:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 5112,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15041:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 5113,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "erc20Wrapper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7302,
                              "src": "15041:48:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "function () view external returns (contract IERC20WrapperV1)"
                              }
                            },
                            "id": 5114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15041:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          ],
                          "id": 5106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "15033:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 5105,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "15033:7:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 5115,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15033:59:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15010:82:4"
                    },
                    {
                      "assignments": [
                        5118
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5118,
                          "mutability": "mutable",
                          "name": "ethId",
                          "nodeType": "VariableDeclaration",
                          "scope": 5233,
                          "src": "15102:10:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5117,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "15102:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5130,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 5124,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967268,
                                        "src": "15149:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                          "typeString": "contract MateriaSwapper"
                                        }
                                      ],
                                      "id": 5123,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15141:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5122,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15141:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5125,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15141:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5121,
                                  "name": "IMateriaOrchestrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7665,
                                  "src": "15120:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMateriaOrchestrator_$7665_$",
                                    "typeString": "type(contract IMateriaOrchestrator)"
                                  }
                                },
                                "id": 5126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15120:35:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              },
                              "id": 5127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "ETHEREUM_OBJECT_ID",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7307,
                              "src": "15120:54:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 5128,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15120:56:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "15115:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 5119,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "15115:4:4",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 5129,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15115:62:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15102:75:4"
                    },
                    {
                      "assignments": [
                        5135
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5135,
                          "mutability": "mutable",
                          "name": "amounts",
                          "nodeType": "VariableDeclaration",
                          "scope": 5233,
                          "src": "15188:21:4",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 5133,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "15188:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5134,
                            "nodeType": "ArrayTypeName",
                            "src": "15188:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                              "typeString": "uint256[]"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5142,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 5138,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5090,
                            "src": "15240:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5139,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5072,
                            "src": "15249:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 5140,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5077,
                            "src": "15260:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "expression": {
                            "id": 5136,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "15212:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 5137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountsIn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8692,
                          "src": "15212:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                          }
                        },
                        "id": 5141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15212:53:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15188:77:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5148,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 5144,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5135,
                                "src": "15283:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 5146,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 5145,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15291:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15283:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "id": 5147,
                              "name": "amountInMax",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5074,
                              "src": "15297:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15283:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4558434553534956455f494e5055545f414d4f554e54",
                            "id": 5149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15310:24:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1ff989705ae00849337ffb650a4f4c5df36920f3e768f284b12a852a5ff9bbdb",
                              "typeString": "literal_string \"EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1ff989705ae00849337ffb650a4f4c5df36920f3e768f284b12a852a5ff9bbdb",
                              "typeString": "literal_string \"EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 5143,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "15275:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15275:60:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5151,
                      "nodeType": "ExpressionStatement",
                      "src": "15275:60:4"
                    },
                    {
                      "id": 5176,
                      "nodeType": "Block",
                      "src": "15354:161:4",
                      "statements": [
                        {
                          "assignments": [
                            5153
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5153,
                              "mutability": "mutable",
                              "name": "amountBack",
                              "nodeType": "VariableDeclaration",
                              "scope": 5176,
                              "src": "15364:15:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5152,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "15364:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5154,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15364:15:4"
                        },
                        {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "id": 5161,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 5155,
                                    "name": "amountBack",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5153,
                                    "src": "15394:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5160,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5156,
                                      "name": "amountInMax",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5074,
                                      "src": "15407:11:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "baseExpression": {
                                        "id": 5157,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5135,
                                        "src": "15421:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 5159,
                                      "indexExpression": {
                                        "hexValue": "30",
                                        "id": 5158,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15429:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15421:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "15407:24:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15394:37:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 5162,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "15393:39:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 5163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15435:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "15393:43:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 5175,
                          "nodeType": "IfStatement",
                          "src": "15389:115:4",
                          "trueBody": {
                            "expression": {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 5168,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5077,
                                    "src": "15478:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 5170,
                                  "indexExpression": {
                                    "hexValue": "30",
                                    "id": 5169,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15483:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "15478:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5171,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5081,
                                  "src": "15487:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5172,
                                  "name": "amountBack",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5153,
                                  "src": "15493:10:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 5165,
                                  "name": "TransferHelper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9474,
                                  "src": "15450:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                                    "typeString": "type(library TransferHelper)"
                                  }
                                },
                                "id": 5167,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeTransfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9402,
                                "src": "15450:27:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256)"
                                }
                              },
                              "id": 5173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15450:54:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5174,
                            "nodeType": "ExpressionStatement",
                            "src": "15450:54:4"
                          }
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "baseExpression": {
                              "id": 5180,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5077,
                              "src": "15574:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 5182,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 5181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15579:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15574:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 5185,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5090,
                                "src": "15606:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 5186,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5077,
                                  "src": "15615:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 5188,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 5187,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15620:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15615:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 5189,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5077,
                                  "src": "15624:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 5191,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 5190,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15629:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15624:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 5183,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "15583:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 5184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "15583:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 5192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15583:49:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 5193,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5135,
                              "src": "15634:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 5195,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 5194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15642:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15634:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5177,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "15533:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 5179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9402,
                          "src": "15533:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 5196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15533:121:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5197,
                      "nodeType": "ExpressionStatement",
                      "src": "15533:121:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5199,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5090,
                            "src": "15679:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5200,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5135,
                            "src": "15688:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "id": 5201,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5077,
                            "src": "15697:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 5204,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "15711:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                                  "typeString": "contract MateriaSwapper"
                                }
                              ],
                              "id": 5203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "15703:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5202,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "15703:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5205,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15703:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 5198,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3172,
                          "src": "15673:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (address,uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 5206,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15673:44:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5207,
                      "nodeType": "ExpressionStatement",
                      "src": "15673:44:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5212,
                            "name": "ethId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5118,
                            "src": "15784:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 5213,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5135,
                              "src": "15803:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 5218,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 5214,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5135,
                                  "src": "15811:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5215,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "15811:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 5216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15828:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "15811:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15803:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 5209,
                                "name": "erc20Wrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5104,
                                "src": "15752:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5208,
                              "name": "IERC20WrapperV1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6161,
                              "src": "15736:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20WrapperV1_$6161_$",
                                "typeString": "type(contract IERC20WrapperV1)"
                              }
                            },
                            "id": 5210,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15736:29:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                              "typeString": "contract IERC20WrapperV1"
                            }
                          },
                          "id": 5211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "burn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6341,
                          "src": "15736:34:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (uint256,uint256) external"
                          }
                        },
                        "id": 5219,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15736:104:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5220,
                      "nodeType": "ExpressionStatement",
                      "src": "15736:104:4"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5224,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5079,
                            "src": "15890:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "baseExpression": {
                              "id": 5225,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5135,
                              "src": "15894:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 5230,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5229,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 5226,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5135,
                                  "src": "15902:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "15902:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 5228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15919:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "15902:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15894:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5221,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "15859:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 5223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9473,
                          "src": "15859:30:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 5231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15859:63:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5232,
                      "nodeType": "ExpressionStatement",
                      "src": "15859:63:4"
                    }
                  ]
                },
                "id": 5234,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "id": 5086,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5083,
                        "src": "14908:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 5087,
                    "modifierName": {
                      "id": 5085,
                      "name": "ensure",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1604,
                      "src": "14901:6:4"
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "14901:16:4"
                  }
                ],
                "name": "swapItemsForExactEth",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5084,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5072,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 5234,
                      "src": "14750:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5071,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14750:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5074,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 5234,
                      "src": "14774:16:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5073,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14774:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5077,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 5234,
                      "src": "14800:21:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5075,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14800:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5076,
                        "nodeType": "ArrayTypeName",
                        "src": "14800:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5079,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 5234,
                      "src": "14831:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5078,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "14831:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5081,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 5234,
                      "src": "14851:12:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5080,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "14851:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5083,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 5234,
                      "src": "14873:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5082,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14873:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "14740:152:4"
                },
                "returnParameters": {
                  "id": 5088,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "14918:0:4"
                },
                "scope": 5415,
                "src": "14711:1218:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "baseFunctions": [
                  5952
                ],
                "body": {
                  "id": 5380,
                  "nodeType": "Block",
                  "src": "16102:933:4",
                  "statements": [
                    {
                      "assignments": [
                        5251
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5251,
                          "mutability": "mutable",
                          "name": "operation",
                          "nodeType": "VariableDeclaration",
                          "scope": 5380,
                          "src": "16112:14:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5250,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "16112:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5252,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16112:14:4"
                    },
                    {
                      "assignments": [
                        5254
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5254,
                          "mutability": "mutable",
                          "name": "amount",
                          "nodeType": "VariableDeclaration",
                          "scope": 5380,
                          "src": "16136:11:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5253,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "16136:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5255,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16136:11:4"
                    },
                    {
                      "assignments": [
                        5260
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5260,
                          "mutability": "mutable",
                          "name": "path",
                          "nodeType": "VariableDeclaration",
                          "scope": 5380,
                          "src": "16157:21:4",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 5258,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16157:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5259,
                            "nodeType": "ArrayTypeName",
                            "src": "16157:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                              "typeString": "address[]"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5261,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16157:21:4"
                    },
                    {
                      "assignments": [
                        5263
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5263,
                          "mutability": "mutable",
                          "name": "to",
                          "nodeType": "VariableDeclaration",
                          "scope": 5380,
                          "src": "16188:10:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 5262,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "16188:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5264,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16188:10:4"
                    },
                    {
                      "assignments": [
                        5266
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5266,
                          "mutability": "mutable",
                          "name": "deadline",
                          "nodeType": "VariableDeclaration",
                          "scope": 5380,
                          "src": "16208:13:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5265,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "16208:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5267,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16208:13:4"
                    },
                    {
                      "id": 5306,
                      "nodeType": "Block",
                      "src": "16240:239:4",
                      "statements": [
                        {
                          "assignments": [
                            5269
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5269,
                              "mutability": "mutable",
                              "name": "payload",
                              "nodeType": "VariableDeclaration",
                              "scope": 5306,
                              "src": "16282:20:4",
                              "stateVariable": false,
                              "storageLocation": "memory",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes"
                              },
                              "typeName": {
                                "id": 5268,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "16282:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5270,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "16282:20:4"
                        },
                        {
                          "expression": {
                            "id": 5283,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "components": [
                                {
                                  "id": 5271,
                                  "name": "operation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5251,
                                  "src": "16317:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 5272,
                                  "name": "payload",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5269,
                                  "src": "16328:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "id": 5273,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "TupleExpression",
                              "src": "16316:20:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$",
                                "typeString": "tuple(uint256,bytes memory)"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 5276,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5244,
                                  "src": "16350:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                },
                                {
                                  "components": [
                                    {
                                      "id": 5278,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16357:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 5277,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16357:4:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    {
                                      "id": 5280,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16363:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": {
                                        "id": 5279,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16363:5:4",
                                        "typeDescriptions": {}
                                      }
                                    }
                                  ],
                                  "id": 5281,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "16356:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                    "typeString": "tuple(type(uint256),type(bytes storage pointer))"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                    "typeString": "tuple(type(uint256),type(bytes storage pointer))"
                                  }
                                ],
                                "expression": {
                                  "id": 5274,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967295,
                                  "src": "16339:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "src": "16339:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5282,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16339:31:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$",
                                "typeString": "tuple(uint256,bytes memory)"
                              }
                            },
                            "src": "16316:54:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5284,
                          "nodeType": "ExpressionStatement",
                          "src": "16316:54:4"
                        },
                        {
                          "expression": {
                            "id": 5304,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "components": [
                                {
                                  "id": 5285,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5254,
                                  "src": "16385:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 5286,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5260,
                                  "src": "16393:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "id": 5287,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5263,
                                  "src": "16399:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5288,
                                  "name": "deadline",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5266,
                                  "src": "16403:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 5289,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "TupleExpression",
                              "src": "16384:28:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$",
                                "typeString": "tuple(uint256,address[] memory,address,uint256)"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 5292,
                                  "name": "payload",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5269,
                                  "src": "16426:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "components": [
                                    {
                                      "id": 5294,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16436:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 5293,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16436:4:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 5296,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "16442:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 5295,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "16442:7:4",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 5297,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "16442:9:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                                        "typeString": "type(address[] memory)"
                                      }
                                    },
                                    {
                                      "id": 5299,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16453:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5298,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16453:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    {
                                      "id": 5301,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16462:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 5300,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16462:4:4",
                                        "typeDescriptions": {}
                                      }
                                    }
                                  ],
                                  "id": 5302,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "16435:32:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                    "typeString": "tuple(type(uint256),type(address[] memory),type(address),type(uint256))"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                    "typeString": "tuple(type(uint256),type(address[] memory),type(address),type(uint256))"
                                  }
                                ],
                                "expression": {
                                  "id": 5290,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967295,
                                  "src": "16415:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "src": "16415:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16415:53:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_payable_$_t_uint256_$",
                                "typeString": "tuple(uint256,address[] memory,address payable,uint256)"
                              }
                            },
                            "src": "16384:84:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5305,
                          "nodeType": "ExpressionStatement",
                          "src": "16384:84:4"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "id": 5321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 5307,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5242,
                          "src": "16497:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5313,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 5309,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967281,
                                    "src": "16525:3:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 5310,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "16525:10:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5308,
                                "name": "_collectionDecimals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1925,
                                "src": "16505:19:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 5311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16505:31:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 5312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16540:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "16505:36:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "id": 5319,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5242,
                            "src": "16561:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "16505:61:4",
                          "trueExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5314,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5242,
                              "src": "16544:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              },
                              "id": 5317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "3130",
                                "id": 5315,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16552:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "hexValue": "3138",
                                "id": 5316,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16556:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_18_by_1",
                                  "typeString": "int_const 18"
                                },
                                "value": "18"
                              },
                              "src": "16552:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              }
                            },
                            "src": "16544:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "16497:69:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5322,
                      "nodeType": "ExpressionStatement",
                      "src": "16497:69:4"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 5323,
                          "name": "operation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5251,
                          "src": "16589:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "32",
                          "id": 5324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16602:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "16589:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5334,
                            "name": "operation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5251,
                            "src": "16682:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "33",
                            "id": 5335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16695:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "src": "16682:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5346,
                              "name": "operation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5251,
                              "src": "16781:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "34",
                              "id": 5347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16794:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "src": "16781:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5357,
                                "name": "operation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5251,
                                "src": "16871:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "35",
                                "id": 5358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16884:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_5_by_1",
                                  "typeString": "int_const 5"
                                },
                                "value": "5"
                              },
                              "src": "16871:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5369,
                                  "name": "revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    4294967277,
                                    4294967277
                                  ],
                                  "referencedDeclaration": 4294967277,
                                  "src": "16963:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 5370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16963:8:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5371,
                              "nodeType": "ExpressionStatement",
                              "src": "16963:8:4"
                            },
                            "id": 5372,
                            "nodeType": "IfStatement",
                            "src": "16867:104:4",
                            "trueBody": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5361,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5254,
                                    "src": "16908:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5362,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5242,
                                    "src": "16916:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5363,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5260,
                                    "src": "16923:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  {
                                    "id": 5364,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5263,
                                    "src": "16929:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5365,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5238,
                                    "src": "16933:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5366,
                                    "name": "deadline",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5266,
                                    "src": "16939:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5360,
                                  "name": "swapItemsForExactEth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5234,
                                  "src": "16887:20:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256,address[] memory,address,address,uint256)"
                                  }
                                },
                                "id": 5367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16887:61:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5368,
                              "nodeType": "ExpressionStatement",
                              "src": "16887:61:4"
                            }
                          },
                          "id": 5373,
                          "nodeType": "IfStatement",
                          "src": "16777:194:4",
                          "trueBody": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5350,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5242,
                                  "src": "16818:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 5351,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5254,
                                  "src": "16825:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 5352,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5260,
                                  "src": "16833:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                {
                                  "id": 5353,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5263,
                                  "src": "16839:2:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5354,
                                  "name": "deadline",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5266,
                                  "src": "16843:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5349,
                                "name": "swapExactItemsForEth",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5070,
                                "src": "16797:20:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256,uint256,address[] memory,address,uint256)"
                                }
                              },
                              "id": 5355,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16797:55:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5356,
                            "nodeType": "ExpressionStatement",
                            "src": "16797:55:4"
                          }
                        },
                        "id": 5374,
                        "nodeType": "IfStatement",
                        "src": "16678:293:4",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 5338,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5254,
                                "src": "16722:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 5339,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5242,
                                "src": "16730:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 5340,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5260,
                                "src": "16737:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              {
                                "id": 5341,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5263,
                                "src": "16743:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 5342,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5238,
                                "src": "16747:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 5343,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5266,
                                "src": "16753:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5337,
                              "name": "swapItemsForExactTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4930,
                              "src": "16698:23:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                "typeString": "function (uint256,uint256,address[] memory,address,address,uint256)"
                              }
                            },
                            "id": 5344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16698:64:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5345,
                          "nodeType": "ExpressionStatement",
                          "src": "16698:64:4"
                        }
                      },
                      "id": 5375,
                      "nodeType": "IfStatement",
                      "src": "16585:386:4",
                      "trueBody": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5327,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5242,
                              "src": "16629:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5328,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5254,
                              "src": "16636:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5329,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5260,
                              "src": "16644:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 5330,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5263,
                              "src": "16650:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5331,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5266,
                              "src": "16654:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5326,
                            "name": "swapExactItemsForTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4702,
                            "src": "16605:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,address[] memory,address,uint256)"
                            }
                          },
                          "id": 5332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16605:58:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5333,
                        "nodeType": "ExpressionStatement",
                        "src": "16605:58:4"
                      }
                    },
                    {
                      "expression": {
                        "expression": {
                          "expression": {
                            "id": 5376,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "16997:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MateriaSwapper_$5415",
                              "typeString": "contract MateriaSwapper"
                            }
                          },
                          "id": 5377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "onERC1155Received",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5381,
                          "src": "16997:22:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                            "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                          }
                        },
                        "id": 5378,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "selector",
                        "nodeType": "MemberAccess",
                        "src": "16997:31:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "functionReturnParameters": 5249,
                      "id": 5379,
                      "nodeType": "Return",
                      "src": "16990:38:4"
                    }
                  ]
                },
                "functionSelector": "f23a6e61",
                "id": 5381,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "onERC1155Received",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 5246,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "16077:8:4"
                },
                "parameters": {
                  "id": 5245,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5236,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5381,
                      "src": "15971:7:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5235,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15971:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5238,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 5381,
                      "src": "15988:12:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5237,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15988:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5240,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5381,
                      "src": "16010:4:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5239,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16010:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5242,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 5381,
                      "src": "16024:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5241,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16024:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5244,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 5381,
                      "src": "16044:19:4",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5243,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "16044:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "15961:108:4"
                },
                "returnParameters": {
                  "id": 5249,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5248,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5381,
                      "src": "16094:6:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 5247,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "16094:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "16093:8:4"
                },
                "scope": 5415,
                "src": "15935:1100:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  5970
                ],
                "body": {
                  "id": 5402,
                  "nodeType": "Block",
                  "src": "17230:25:4",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5399,
                          "name": "revert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967277,
                            4294967277
                          ],
                          "referencedDeclaration": 4294967277,
                          "src": "17240:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                            "typeString": "function () pure"
                          }
                        },
                        "id": 5400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17240:8:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5401,
                      "nodeType": "ExpressionStatement",
                      "src": "17240:8:4"
                    }
                  ]
                },
                "functionSelector": "bc197c81",
                "id": 5403,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "onERC1155BatchReceived",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 5395,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "17200:8:4"
                },
                "parameters": {
                  "id": 5394,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5383,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5403,
                      "src": "17082:7:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5382,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17082:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5385,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5403,
                      "src": "17099:7:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5384,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17099:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5388,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5403,
                      "src": "17116:18:4",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5386,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17116:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5387,
                        "nodeType": "ArrayTypeName",
                        "src": "17116:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5391,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5403,
                      "src": "17144:18:4",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5389,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17144:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5390,
                        "nodeType": "ArrayTypeName",
                        "src": "17144:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5393,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5403,
                      "src": "17172:14:4",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5392,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "17172:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "17072:120:4"
                },
                "returnParameters": {
                  "id": 5398,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5397,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5403,
                      "src": "17222:6:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 5396,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "17222:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "17221:8:4"
                },
                "scope": 5415,
                "src": "17041:214:4",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6026
                ],
                "body": {
                  "id": 5413,
                  "nodeType": "Block",
                  "src": "17350:29:4",
                  "statements": [
                    {
                      "expression": {
                        "hexValue": "66616c7365",
                        "id": 5411,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17367:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "functionReturnParameters": 5410,
                      "id": 5412,
                      "nodeType": "Return",
                      "src": "17360:12:4"
                    }
                  ]
                },
                "functionSelector": "01ffc9a7",
                "id": 5414,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "supportsInterface",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 5407,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "17321:8:4"
                },
                "parameters": {
                  "id": 5406,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5405,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5414,
                      "src": "17301:6:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 5404,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "17301:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "17291:22:4"
                },
                "returnParameters": {
                  "id": 5410,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5409,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5414,
                      "src": "17344:4:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5408,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "17344:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "17343:6:4"
                },
                "scope": 5415,
                "src": "17265:114:4",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 5416,
            "src": "437:16944:4"
          }
        ],
        "src": "40:17341:4"
      }
    },
    "contracts/examples/ExampleComputeLiquidityValue.sol": {
      "id": 5,
      "AST": {
        "absolutePath": "contracts/examples/ExampleComputeLiquidityValue.sol",
        "exportedSymbols": {
          "ExampleComputeLiquidityValue": [
            5550
          ],
          "IMateriaFactory": [
            7180
          ],
          "IMateriaPair": [
            7944
          ],
          "MateriaLibrary": [
            8693
          ],
          "MateriaLiquidityMathLibrary": [
            9163
          ],
          "Math": [
            9239
          ],
          "SafeMath": [
            9314
          ]
        },
        "id": 5551,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5417,
            "literals": [
              "solidity",
              "=",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:23:5"
          },
          {
            "absolutePath": "contracts/libraries/MateriaLiquidityMathLibrary.sol",
            "file": "../libraries/MateriaLiquidityMathLibrary.sol",
            "id": 5418,
            "nodeType": "ImportDirective",
            "scope": 5551,
            "sourceUnit": 9164,
            "src": "25:54:5",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "fullyImplemented": true,
            "id": 5550,
            "linearizedBaseContracts": [
              5550
            ],
            "name": "ExampleComputeLiquidityValue",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 5421,
                "libraryName": {
                  "id": 5419,
                  "name": "SafeMath",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9314,
                  "src": "131:8:5"
                },
                "nodeType": "UsingForDirective",
                "src": "125:27:5",
                "typeName": {
                  "id": 5420,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "144:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": false,
                "functionSelector": "c45a0155",
                "id": 5423,
                "mutability": "immutable",
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "scope": 5550,
                "src": "158:32:5",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 5422,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "158:7:5",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5432,
                  "nodeType": "Block",
                  "src": "234:35:5",
                  "statements": [
                    {
                      "expression": {
                        "id": 5430,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 5428,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5423,
                          "src": "244:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 5429,
                          "name": "factory_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5425,
                          "src": "254:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "244:18:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 5431,
                      "nodeType": "ExpressionStatement",
                      "src": "244:18:5"
                    }
                  ]
                },
                "id": 5433,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5426,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5425,
                      "mutability": "mutable",
                      "name": "factory_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5433,
                      "src": "209:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5424,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "209:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "208:18:5"
                },
                "returnParameters": {
                  "id": 5427,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "234:0:5"
                },
                "scope": 5550,
                "src": "197:72:5",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5457,
                  "nodeType": "Block",
                  "src": "554:206:5",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5450,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5423,
                            "src": "638:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5451,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5435,
                            "src": "659:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5452,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5437,
                            "src": "679:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5453,
                            "name": "truePriceTokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5439,
                            "src": "699:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 5454,
                            "name": "truePriceTokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5441,
                            "src": "728:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5448,
                            "name": "MateriaLiquidityMathLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9163,
                            "src": "571:27:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLiquidityMathLibrary_$9163_$",
                              "typeString": "type(library MateriaLiquidityMathLibrary)"
                            }
                          },
                          "id": 5449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReservesAfterArbitrage",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8893,
                          "src": "571:53:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address,uint256,uint256) view returns (uint256,uint256)"
                          }
                        },
                        "id": 5455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "571:182:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "functionReturnParameters": 5447,
                      "id": 5456,
                      "nodeType": "Return",
                      "src": "564:189:5"
                    }
                  ]
                },
                "functionSelector": "3558e94c",
                "id": 5458,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getReservesAfterArbitrage",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5442,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5435,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 5458,
                      "src": "384:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5434,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "384:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5437,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 5458,
                      "src": "408:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5436,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "408:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5439,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 5458,
                      "src": "432:23:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5438,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "432:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5441,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 5458,
                      "src": "465:23:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5440,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "465:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "374:120:5"
                },
                "returnParameters": {
                  "id": 5447,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5444,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "scope": 5458,
                      "src": "518:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5443,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "518:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5446,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "scope": 5458,
                      "src": "536:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5445,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "536:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "517:36:5"
                },
                "scope": 5550,
                "src": "340:420:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 5479,
                  "nodeType": "Block",
                  "src": "1026:169:5",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5473,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5423,
                            "src": "1102:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5474,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5460,
                            "src": "1123:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5475,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5462,
                            "src": "1143:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5476,
                            "name": "liquidityAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5464,
                            "src": "1163:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5471,
                            "name": "MateriaLiquidityMathLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9163,
                            "src": "1043:27:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLiquidityMathLibrary_$9163_$",
                              "typeString": "type(library MateriaLiquidityMathLibrary)"
                            }
                          },
                          "id": 5472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getLiquidityValue",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9070,
                          "src": "1043:45:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address,uint256) view returns (uint256,uint256)"
                          }
                        },
                        "id": 5477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1043:145:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "functionReturnParameters": 5470,
                      "id": 5478,
                      "nodeType": "Return",
                      "src": "1036:152:5"
                    }
                  ]
                },
                "functionSelector": "d9b7a6e7",
                "id": 5480,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getLiquidityValue",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5465,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5460,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 5480,
                      "src": "859:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5459,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "859:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5462,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 5480,
                      "src": "883:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5461,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "883:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5464,
                      "mutability": "mutable",
                      "name": "liquidityAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 5480,
                      "src": "907:23:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5463,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "907:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "849:87:5"
                },
                "returnParameters": {
                  "id": 5470,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5467,
                      "mutability": "mutable",
                      "name": "tokenAAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 5480,
                      "src": "969:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5466,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "969:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5469,
                      "mutability": "mutable",
                      "name": "tokenBAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 5480,
                      "src": "999:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5468,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "999:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "959:66:5"
                },
                "scope": 5550,
                "src": "823:372:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 5507,
                  "nodeType": "Block",
                  "src": "1569:248:5",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5499,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5423,
                            "src": "1666:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5500,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5482,
                            "src": "1687:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5501,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5484,
                            "src": "1707:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5502,
                            "name": "truePriceTokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5486,
                            "src": "1727:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 5503,
                            "name": "truePriceTokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5488,
                            "src": "1756:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 5504,
                            "name": "liquidityAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5490,
                            "src": "1785:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5497,
                            "name": "MateriaLiquidityMathLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9163,
                            "src": "1586:27:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLiquidityMathLibrary_$9163_$",
                              "typeString": "type(library MateriaLiquidityMathLibrary)"
                            }
                          },
                          "id": 5498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getLiquidityValueAfterArbitrageToPrice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9162,
                          "src": "1586:66:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address,uint256,uint256,uint256) view returns (uint256,uint256)"
                          }
                        },
                        "id": 5505,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1586:224:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "functionReturnParameters": 5496,
                      "id": 5506,
                      "nodeType": "Return",
                      "src": "1579:231:5"
                    }
                  ]
                },
                "functionSelector": "69a2fcbd",
                "id": 5508,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getLiquidityValueAfterArbitrageToPrice",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5491,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5482,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 5508,
                      "src": "1336:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5481,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1336:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5484,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 5508,
                      "src": "1360:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5483,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1360:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5486,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 5508,
                      "src": "1384:23:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5485,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1384:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5488,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 5508,
                      "src": "1417:23:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5487,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1417:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5490,
                      "mutability": "mutable",
                      "name": "liquidityAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 5508,
                      "src": "1450:23:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5489,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1450:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1326:153:5"
                },
                "returnParameters": {
                  "id": 5496,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5493,
                      "mutability": "mutable",
                      "name": "tokenAAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 5508,
                      "src": "1512:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5492,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1512:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5495,
                      "mutability": "mutable",
                      "name": "tokenBAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 5508,
                      "src": "1542:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5494,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1542:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1502:66:5"
                },
                "scope": 5550,
                "src": "1279:538:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 5548,
                  "nodeType": "Block",
                  "src": "2149:349:5",
                  "statements": [
                    {
                      "assignments": [
                        5524
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5524,
                          "mutability": "mutable",
                          "name": "gasBefore",
                          "nodeType": "VariableDeclaration",
                          "scope": 5548,
                          "src": "2159:14:5",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5523,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2159:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5527,
                      "initialValue": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5525,
                          "name": "gasleft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967289,
                          "src": "2176:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 5526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2176:9:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2159:26:5"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5531,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5423,
                            "src": "2275:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5532,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5510,
                            "src": "2296:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5533,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5512,
                            "src": "2316:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5534,
                            "name": "truePriceTokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5514,
                            "src": "2336:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 5535,
                            "name": "truePriceTokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5516,
                            "src": "2365:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 5536,
                            "name": "liquidityAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5518,
                            "src": "2394:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5528,
                            "name": "MateriaLiquidityMathLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9163,
                            "src": "2195:27:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLiquidityMathLibrary_$9163_$",
                              "typeString": "type(library MateriaLiquidityMathLibrary)"
                            }
                          },
                          "id": 5530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getLiquidityValueAfterArbitrageToPrice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9162,
                          "src": "2195:66:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address,uint256,uint256,uint256) view returns (uint256,uint256)"
                          }
                        },
                        "id": 5537,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2195:224:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "id": 5538,
                      "nodeType": "ExpressionStatement",
                      "src": "2195:224:5"
                    },
                    {
                      "assignments": [
                        5540
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5540,
                          "mutability": "mutable",
                          "name": "gasAfter",
                          "nodeType": "VariableDeclaration",
                          "scope": 5548,
                          "src": "2429:13:5",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5539,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2429:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5543,
                      "initialValue": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5541,
                          "name": "gasleft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967289,
                          "src": "2445:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 5542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2445:9:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2429:25:5"
                    },
                    {
                      "expression": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 5544,
                          "name": "gasBefore",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5524,
                          "src": "2471:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "id": 5545,
                          "name": "gasAfter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5540,
                          "src": "2483:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2471:20:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 5522,
                      "id": 5547,
                      "nodeType": "Return",
                      "src": "2464:27:5"
                    }
                  ]
                },
                "functionSelector": "80caa353",
                "id": 5549,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getGasCostOfGetLiquidityValueAfterArbitrageToPrice",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5519,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5510,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 5549,
                      "src": "1959:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5509,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1959:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5512,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 5549,
                      "src": "1983:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5511,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1983:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5514,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 5549,
                      "src": "2007:23:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5513,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2007:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5516,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 5549,
                      "src": "2040:23:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5515,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2040:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5518,
                      "mutability": "mutable",
                      "name": "liquidityAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 5549,
                      "src": "2073:23:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5517,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2073:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1949:153:5"
                },
                "returnParameters": {
                  "id": 5522,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5521,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5549,
                      "src": "2135:7:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5520,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2135:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2125:23:5"
                },
                "scope": 5550,
                "src": "1890:608:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 5551,
            "src": "81:2419:5"
          }
        ],
        "src": "0:2501:5"
      }
    },
    "contracts/examples/ExampleSwapToPrice.sol": {
      "id": 6,
      "AST": {
        "absolutePath": "contracts/examples/ExampleSwapToPrice.sol",
        "exportedSymbols": {
          "ExampleSwapToPrice": [
            5751
          ],
          "IBaseTokenData": [
            5764
          ],
          "IDoubleProxy": [
            5811
          ],
          "IERC1155": [
            5933
          ],
          "IERC1155Receiver": [
            5971
          ],
          "IERC1155Views": [
            6015
          ],
          "IERC165": [
            6027
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ],
          "IERC20WrapperV1": [
            6161
          ],
          "IEthItemInteroperableInterface": [
            6250
          ],
          "IEthItemMainInterface": [
            6365
          ],
          "IEthItemModelBase": [
            6392
          ],
          "IMateriaFactory": [
            7180
          ],
          "IMateriaOrchestrator": [
            7665
          ],
          "IMateriaPair": [
            7944
          ],
          "MateriaLibrary": [
            8693
          ],
          "MateriaLiquidityMathLibrary": [
            9163
          ],
          "Math": [
            9239
          ],
          "SafeMath": [
            9314
          ],
          "TransferHelper": [
            9474
          ]
        },
        "id": 5752,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5552,
            "literals": [
              "solidity",
              "=",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:23:6"
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaPair.sol",
            "file": "../interfaces/IMateriaPair.sol",
            "id": 5553,
            "nodeType": "ImportDirective",
            "scope": 5752,
            "sourceUnit": 7945,
            "src": "25:40:6",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MateriaLiquidityMathLibrary.sol",
            "file": "../libraries/MateriaLiquidityMathLibrary.sol",
            "id": 5554,
            "nodeType": "ImportDirective",
            "scope": 5752,
            "sourceUnit": 9164,
            "src": "66:54:6",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "../interfaces/IERC20.sol",
            "id": 5555,
            "nodeType": "ImportDirective",
            "scope": 5752,
            "sourceUnit": 6106,
            "src": "121:34:6",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaOrchestrator.sol",
            "file": "../interfaces/IMateriaOrchestrator.sol",
            "id": 5556,
            "nodeType": "ImportDirective",
            "scope": 5752,
            "sourceUnit": 7666,
            "src": "156:48:6",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "../libraries/SafeMath.sol",
            "id": 5557,
            "nodeType": "ImportDirective",
            "scope": 5752,
            "sourceUnit": 9315,
            "src": "205:35:6",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MateriaLibrary.sol",
            "file": "../libraries/MateriaLibrary.sol",
            "id": 5558,
            "nodeType": "ImportDirective",
            "scope": 5752,
            "sourceUnit": 8694,
            "src": "241:41:6",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/TransferHelper.sol",
            "file": "../libraries/TransferHelper.sol",
            "id": 5559,
            "nodeType": "ImportDirective",
            "scope": 5752,
            "sourceUnit": 9475,
            "src": "283:41:6",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "fullyImplemented": true,
            "id": 5751,
            "linearizedBaseContracts": [
              5751
            ],
            "name": "ExampleSwapToPrice",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 5562,
                "libraryName": {
                  "id": 5560,
                  "name": "SafeMath",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9314,
                  "src": "366:8:6"
                },
                "nodeType": "UsingForDirective",
                "src": "360:27:6",
                "typeName": {
                  "id": 5561,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "379:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": false,
                "functionSelector": "b74795d9",
                "id": 5565,
                "mutability": "immutable",
                "name": "orchestrator",
                "nodeType": "VariableDeclaration",
                "scope": 5751,
                "src": "393:50:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                  "typeString": "contract IMateriaOrchestrator"
                },
                "typeName": {
                  "id": 5564,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 5563,
                    "name": "IMateriaOrchestrator",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7665,
                    "src": "393:20:6"
                  },
                  "referencedDeclaration": 7665,
                  "src": "393:20:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                    "typeString": "contract IMateriaOrchestrator"
                  }
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "c45a0155",
                "id": 5567,
                "mutability": "immutable",
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "scope": 5751,
                "src": "449:32:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 5566,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "449:7:6",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5583,
                  "nodeType": "Block",
                  "src": "561:73:6",
                  "statements": [
                    {
                      "expression": {
                        "id": 5577,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 5575,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5567,
                          "src": "571:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 5576,
                          "name": "factory_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5569,
                          "src": "581:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "571:18:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 5578,
                      "nodeType": "ExpressionStatement",
                      "src": "571:18:6"
                    },
                    {
                      "expression": {
                        "id": 5581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 5579,
                          "name": "orchestrator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5565,
                          "src": "599:12:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                            "typeString": "contract IMateriaOrchestrator"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 5580,
                          "name": "orchestrator_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5572,
                          "src": "614:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                            "typeString": "contract IMateriaOrchestrator"
                          }
                        },
                        "src": "599:28:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                          "typeString": "contract IMateriaOrchestrator"
                        }
                      },
                      "id": 5582,
                      "nodeType": "ExpressionStatement",
                      "src": "599:28:6"
                    }
                  ]
                },
                "id": 5584,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5573,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5569,
                      "mutability": "mutable",
                      "name": "factory_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5584,
                      "src": "500:16:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5568,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "500:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5572,
                      "mutability": "mutable",
                      "name": "orchestrator_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5584,
                      "src": "518:34:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                        "typeString": "contract IMateriaOrchestrator"
                      },
                      "typeName": {
                        "id": 5571,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 5570,
                          "name": "IMateriaOrchestrator",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 7665,
                          "src": "518:20:6"
                        },
                        "referencedDeclaration": 7665,
                        "src": "518:20:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                          "typeString": "contract IMateriaOrchestrator"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "499:54:6"
                },
                "returnParameters": {
                  "id": 5574,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "561:0:6"
                },
                "scope": 5751,
                "src": "488:146:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5749,
                  "nodeType": "Block",
                  "src": "1166:1608:6",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 5610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5604,
                                "name": "truePriceTokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5590,
                                "src": "1263:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 5605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1282:1:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1263:20:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5607,
                                "name": "truePriceTokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5592,
                                "src": "1287:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 5608,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1306:1:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1287:20:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1263:44:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4578616d706c6553776170546f50726963653a205a45524f5f5052494345",
                            "id": 5611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1309:32:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_28884a31faca5d65acd285d3e7facdbc4f9dbd1892b1de1088d8d4416762107c",
                              "typeString": "literal_string \"ExampleSwapToPrice: ZERO_PRICE\""
                            },
                            "value": "ExampleSwapToPrice: ZERO_PRICE"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_28884a31faca5d65acd285d3e7facdbc4f9dbd1892b1de1088d8d4416762107c",
                              "typeString": "literal_string \"ExampleSwapToPrice: ZERO_PRICE\""
                            }
                          ],
                          "id": 5603,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "1255:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1255:87:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5613,
                      "nodeType": "ExpressionStatement",
                      "src": "1255:87:6"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 5621,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5615,
                                "name": "maxSpendTokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5594,
                                "src": "1460:14:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 5616,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1478:1:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1460:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5618,
                                "name": "maxSpendTokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5596,
                                "src": "1483:14:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 5619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1501:1:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1483:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1460:42:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4578616d706c6553776170546f50726963653a205a45524f5f5350454e44",
                            "id": 5622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1504:32:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0e350328e0fc66ff97196802ff2d70f334d01d23a12a3b201cf85446302b610f",
                              "typeString": "literal_string \"ExampleSwapToPrice: ZERO_SPEND\""
                            },
                            "value": "ExampleSwapToPrice: ZERO_SPEND"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_0e350328e0fc66ff97196802ff2d70f334d01d23a12a3b201cf85446302b610f",
                              "typeString": "literal_string \"ExampleSwapToPrice: ZERO_SPEND\""
                            }
                          ],
                          "id": 5614,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "1452:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5623,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1452:85:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5624,
                      "nodeType": "ExpressionStatement",
                      "src": "1452:85:6"
                    },
                    {
                      "assignments": [
                        5626
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5626,
                          "mutability": "mutable",
                          "name": "aToB",
                          "nodeType": "VariableDeclaration",
                          "scope": 5749,
                          "src": "1548:9:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 5625,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1548:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5627,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1548:9:6"
                    },
                    {
                      "assignments": [
                        5629
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5629,
                          "mutability": "mutable",
                          "name": "amountIn",
                          "nodeType": "VariableDeclaration",
                          "scope": 5749,
                          "src": "1567:16:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5628,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1567:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5630,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1567:16:6"
                    },
                    {
                      "id": 5654,
                      "nodeType": "Block",
                      "src": "1593:304:6",
                      "statements": [
                        {
                          "assignments": [
                            5632,
                            5634
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5632,
                              "mutability": "mutable",
                              "name": "reserveA",
                              "nodeType": "VariableDeclaration",
                              "scope": 5654,
                              "src": "1608:16:6",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5631,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1608:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            },
                            {
                              "constant": false,
                              "id": 5634,
                              "mutability": "mutable",
                              "name": "reserveB",
                              "nodeType": "VariableDeclaration",
                              "scope": 5654,
                              "src": "1626:16:6",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5633,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1626:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5641,
                          "initialValue": {
                            "arguments": [
                              {
                                "id": 5637,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5567,
                                "src": "1673:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 5638,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5586,
                                "src": "1682:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 5639,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5588,
                                "src": "1690:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 5635,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "1646:14:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 5636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getReserves",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8367,
                              "src": "1646:26:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,address) view returns (uint256,uint256)"
                              }
                            },
                            "id": 5640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1646:51:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1607:90:6"
                        },
                        {
                          "expression": {
                            "id": 5652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "components": [
                                {
                                  "id": 5642,
                                  "name": "aToB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5626,
                                  "src": "1712:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 5643,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5629,
                                  "src": "1718:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 5644,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "TupleExpression",
                              "src": "1711:16:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                "typeString": "tuple(bool,uint256)"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 5647,
                                  "name": "truePriceTokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5590,
                                  "src": "1804:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 5648,
                                  "name": "truePriceTokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5592,
                                  "src": "1821:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 5649,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5632,
                                  "src": "1854:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 5650,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5634,
                                  "src": "1864:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 5645,
                                  "name": "MateriaLiquidityMathLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9163,
                                  "src": "1730:27:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MateriaLiquidityMathLibrary_$9163_$",
                                    "typeString": "type(library MateriaLiquidityMathLibrary)"
                                  }
                                },
                                "id": 5646,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "computeProfitMaximizingTrade",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8795,
                                "src": "1730:56:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256,uint256) pure returns (bool,uint256)"
                                }
                              },
                              "id": 5651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1730:156:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                "typeString": "tuple(bool,uint256)"
                              }
                            },
                            "src": "1711:175:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5653,
                          "nodeType": "ExpressionStatement",
                          "src": "1711:175:6"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5656,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5629,
                              "src": "1915:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 5657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1926:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1915:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f494e",
                            "id": 5659,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1929:36:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e00c3db9f0c792ecddaeae01031fb06d978f06975d30b88ac8730a99f6d0fa3a",
                              "typeString": "literal_string \"ExampleSwapToPrice: ZERO_AMOUNT_IN\""
                            },
                            "value": "ExampleSwapToPrice: ZERO_AMOUNT_IN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e00c3db9f0c792ecddaeae01031fb06d978f06975d30b88ac8730a99f6d0fa3a",
                              "typeString": "literal_string \"ExampleSwapToPrice: ZERO_AMOUNT_IN\""
                            }
                          ],
                          "id": 5655,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "1907:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1907:59:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5661,
                      "nodeType": "ExpressionStatement",
                      "src": "1907:59:6"
                    },
                    {
                      "assignments": [
                        5663
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5663,
                          "mutability": "mutable",
                          "name": "maxSpend",
                          "nodeType": "VariableDeclaration",
                          "scope": 5749,
                          "src": "2030:16:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5662,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2030:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5668,
                      "initialValue": {
                        "condition": {
                          "id": 5664,
                          "name": "aToB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5626,
                          "src": "2049:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "id": 5666,
                          "name": "maxSpendTokenB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5596,
                          "src": "2073:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5667,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "2049:38:6",
                        "trueExpression": {
                          "id": 5665,
                          "name": "maxSpendTokenA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5594,
                          "src": "2056:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2030:57:6"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5671,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 5669,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5629,
                          "src": "2101:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "id": 5670,
                          "name": "maxSpend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5663,
                          "src": "2112:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2101:19:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 5677,
                      "nodeType": "IfStatement",
                      "src": "2097:69:6",
                      "trueBody": {
                        "id": 5676,
                        "nodeType": "Block",
                        "src": "2122:44:6",
                        "statements": [
                          {
                            "expression": {
                              "id": 5674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 5672,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5629,
                                "src": "2136:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "id": 5673,
                                "name": "maxSpend",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5663,
                                "src": "2147:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2136:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5675,
                            "nodeType": "ExpressionStatement",
                            "src": "2136:19:6"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        5679
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5679,
                          "mutability": "mutable",
                          "name": "tokenIn",
                          "nodeType": "VariableDeclaration",
                          "scope": 5749,
                          "src": "2176:15:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 5678,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2176:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5684,
                      "initialValue": {
                        "condition": {
                          "id": 5680,
                          "name": "aToB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5626,
                          "src": "2194:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "id": 5682,
                          "name": "tokenB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5588,
                          "src": "2210:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5683,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "2194:22:6",
                        "trueExpression": {
                          "id": 5681,
                          "name": "tokenA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5586,
                          "src": "2201:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2176:40:6"
                    },
                    {
                      "assignments": [
                        5686
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5686,
                          "mutability": "mutable",
                          "name": "tokenOut",
                          "nodeType": "VariableDeclaration",
                          "scope": 5749,
                          "src": "2226:16:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 5685,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2226:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5691,
                      "initialValue": {
                        "condition": {
                          "id": 5687,
                          "name": "aToB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5626,
                          "src": "2245:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "id": 5689,
                          "name": "tokenA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5586,
                          "src": "2261:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5690,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "2245:22:6",
                        "trueExpression": {
                          "id": 5688,
                          "name": "tokenB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5588,
                          "src": "2252:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2226:41:6"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5695,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5679,
                            "src": "2309:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 5696,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "2318:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "2318:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 5700,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "2338:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ExampleSwapToPrice_$5751",
                                  "typeString": "contract ExampleSwapToPrice"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ExampleSwapToPrice_$5751",
                                  "typeString": "contract ExampleSwapToPrice"
                                }
                              ],
                              "id": 5699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2330:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5698,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2330:7:6",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2330:13:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5702,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5629,
                            "src": "2345:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5692,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "2277:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 5694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9448,
                          "src": "2277:31:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 5703,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2277:77:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5704,
                      "nodeType": "ExpressionStatement",
                      "src": "2277:77:6"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5708,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5679,
                            "src": "2391:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 5711,
                                "name": "orchestrator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5565,
                                "src": "2408:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                                  "typeString": "contract IMateriaOrchestrator"
                                }
                              ],
                              "id": 5710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2400:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5709,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2400:7:6",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2400:21:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5713,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5629,
                            "src": "2423:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5705,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9474,
                            "src": "2364:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$9474_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 5707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeApprove",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9359,
                          "src": "2364:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 5714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2364:68:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5715,
                      "nodeType": "ExpressionStatement",
                      "src": "2364:68:6"
                    },
                    {
                      "assignments": [
                        5720
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5720,
                          "mutability": "mutable",
                          "name": "path",
                          "nodeType": "VariableDeclaration",
                          "scope": 5749,
                          "src": "2443:21:6",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 5718,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2443:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5719,
                            "nodeType": "ArrayTypeName",
                            "src": "2443:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                              "typeString": "address[]"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5726,
                      "initialValue": {
                        "arguments": [
                          {
                            "hexValue": "32",
                            "id": 5724,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2481:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            }
                          ],
                          "id": 5723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "2467:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (address[] memory)"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 5721,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2471:7:6",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5722,
                            "nodeType": "ArrayTypeName",
                            "src": "2471:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                              "typeString": "address[]"
                            }
                          }
                        },
                        "id": 5725,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2467:16:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2443:40:6"
                    },
                    {
                      "expression": {
                        "id": 5731,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 5727,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5720,
                            "src": "2493:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 5729,
                          "indexExpression": {
                            "hexValue": "30",
                            "id": 5728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2498:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2493:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 5730,
                          "name": "tokenIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5679,
                          "src": "2503:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2493:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 5732,
                      "nodeType": "ExpressionStatement",
                      "src": "2493:17:6"
                    },
                    {
                      "expression": {
                        "id": 5737,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 5733,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5720,
                            "src": "2520:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 5735,
                          "indexExpression": {
                            "hexValue": "31",
                            "id": 5734,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2525:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2520:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 5736,
                          "name": "tokenOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5686,
                          "src": "2530:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2520:18:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 5738,
                      "nodeType": "ExpressionStatement",
                      "src": "2520:18:6"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5742,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5629,
                            "src": "2600:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "hexValue": "30",
                            "id": 5743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2622:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "id": 5744,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5720,
                            "src": "2715:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          {
                            "id": 5745,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5598,
                            "src": "2733:2:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5746,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5600,
                            "src": "2749:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5739,
                            "name": "orchestrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5565,
                            "src": "2549:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaOrchestrator_$7665",
                              "typeString": "contract IMateriaOrchestrator"
                            }
                          },
                          "id": 5741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "swapExactTokensForTokens",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7497,
                          "src": "2549:37:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                          }
                        },
                        "id": 5747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2549:218:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 5748,
                      "nodeType": "ExpressionStatement",
                      "src": "2549:218:6"
                    }
                  ]
                },
                "functionSelector": "bef90fd3",
                "id": 5750,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapToPrice",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5601,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5586,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 5750,
                      "src": "938:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5585,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "938:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5588,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 5750,
                      "src": "962:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5587,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "962:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5590,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 5750,
                      "src": "986:23:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5589,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "986:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5592,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 5750,
                      "src": "1019:23:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5591,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1019:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5594,
                      "mutability": "mutable",
                      "name": "maxSpendTokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 5750,
                      "src": "1052:22:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5593,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1052:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5596,
                      "mutability": "mutable",
                      "name": "maxSpendTokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 5750,
                      "src": "1084:22:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5595,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1084:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5598,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 5750,
                      "src": "1116:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5597,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1116:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5600,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 5750,
                      "src": "1136:16:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5599,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1136:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "928:230:6"
                },
                "returnParameters": {
                  "id": 5602,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1166:0:6"
                },
                "scope": 5751,
                "src": "908:1866:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 5752,
            "src": "326:2450:6"
          }
        ],
        "src": "0:2777:6"
      }
    },
    "contracts/interfaces/IBaseTokenData.sol": {
      "id": 7,
      "AST": {
        "absolutePath": "contracts/interfaces/IBaseTokenData.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ]
        },
        "id": 5765,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5753,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:22:7"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 5764,
            "linearizedBaseContracts": [
              5764
            ],
            "name": "IBaseTokenData",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "06fdde03",
                "id": 5758,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "name",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5754,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "101:2:7"
                },
                "returnParameters": {
                  "id": 5757,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5756,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5758,
                      "src": "127:13:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 5755,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "127:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "126:15:7"
                },
                "scope": 5764,
                "src": "88:54:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "95d89b41",
                "id": 5763,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "symbol",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5759,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "163:2:7"
                },
                "returnParameters": {
                  "id": 5762,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5761,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5763,
                      "src": "189:13:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 5760,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "189:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "188:15:7"
                },
                "scope": 5764,
                "src": "148:56:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 5765,
            "src": "57:149:7"
          }
        ],
        "src": "33:173:7"
      }
    },
    "contracts/interfaces/IDoubleProxy.sol": {
      "id": 8,
      "AST": {
        "absolutePath": "contracts/interfaces/IDoubleProxy.sol",
        "exportedSymbols": {
          "IDoubleProxy": [
            5811
          ]
        },
        "id": 5812,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5766,
            "literals": [
              "solidity",
              "=",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "34:23:8"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 5811,
            "linearizedBaseContracts": [
              5811
            ],
            "name": "IDoubleProxy",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "7e1ddf64",
                "id": 5774,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "init",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5772,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5769,
                      "mutability": "mutable",
                      "name": "proxyList",
                      "nodeType": "VariableDeclaration",
                      "scope": 5774,
                      "src": "102:28:8",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5767,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "102:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5768,
                        "nodeType": "ArrayTypeName",
                        "src": "102:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5771,
                      "mutability": "mutable",
                      "name": "currentProxy",
                      "nodeType": "VariableDeclaration",
                      "scope": 5774,
                      "src": "132:20:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5770,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "132:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "101:52:8"
                },
                "returnParameters": {
                  "id": 5773,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "162:0:8"
                },
                "scope": 5811,
                "src": "88:75:8",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "ec556889",
                "id": 5779,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "proxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5775,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "183:2:8"
                },
                "returnParameters": {
                  "id": 5778,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5777,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5779,
                      "src": "209:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5776,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "209:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "208:9:8"
                },
                "scope": 5811,
                "src": "169:49:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "3914a04f",
                "id": 5782,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5780,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "241:2:8"
                },
                "returnParameters": {
                  "id": 5781,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "252:0:8"
                },
                "scope": 5811,
                "src": "224:29:8",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "29710388",
                "id": 5789,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "isProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5785,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5784,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5789,
                      "src": "276:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5783,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "276:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "275:9:8"
                },
                "returnParameters": {
                  "id": 5788,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5787,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5789,
                      "src": "308:4:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5786,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "308:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "307:6:8"
                },
                "scope": 5811,
                "src": "259:55:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "a9f7dfbf",
                "id": 5794,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "proxiesLength",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5790,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "342:2:8"
                },
                "returnParameters": {
                  "id": 5793,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5792,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5794,
                      "src": "368:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5791,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "368:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "367:9:8"
                },
                "scope": 5811,
                "src": "320:57:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "de530700",
                "id": 5804,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "proxies",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5799,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5796,
                      "mutability": "mutable",
                      "name": "start",
                      "nodeType": "VariableDeclaration",
                      "scope": 5804,
                      "src": "400:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5795,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "400:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5798,
                      "mutability": "mutable",
                      "name": "offset",
                      "nodeType": "VariableDeclaration",
                      "scope": 5804,
                      "src": "415:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5797,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "415:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "399:31:8"
                },
                "returnParameters": {
                  "id": 5803,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5802,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5804,
                      "src": "454:16:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5800,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "454:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5801,
                        "nodeType": "ArrayTypeName",
                        "src": "454:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "453:18:8"
                },
                "scope": 5811,
                "src": "383:89:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "bcc38d59",
                "id": 5810,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "proxies",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5805,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "494:2:8"
                },
                "returnParameters": {
                  "id": 5809,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5808,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5810,
                      "src": "520:16:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5806,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "520:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5807,
                        "nodeType": "ArrayTypeName",
                        "src": "520:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "519:18:8"
                },
                "scope": 5811,
                "src": "478:60:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 5812,
            "src": "59:481:8"
          }
        ],
        "src": "34:507:8"
      }
    },
    "contracts/interfaces/IERC1155.sol": {
      "id": 9,
      "AST": {
        "absolutePath": "contracts/interfaces/IERC1155.sol",
        "exportedSymbols": {
          "IERC1155": [
            5933
          ],
          "IERC165": [
            6027
          ]
        },
        "id": 5934,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5813,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "32:22:9"
          },
          {
            "absolutePath": "contracts/interfaces/IERC165.sol",
            "file": "./IERC165.sol",
            "id": 5814,
            "nodeType": "ImportDirective",
            "scope": 5934,
            "sourceUnit": 6028,
            "src": "56:23:9",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 5816,
                  "name": "IERC165",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 6027,
                  "src": "269:7:9"
                },
                "id": 5817,
                "nodeType": "InheritanceSpecifier",
                "src": "269:7:9"
              }
            ],
            "contractDependencies": [
              6027
            ],
            "contractKind": "interface",
            "documentation": {
              "id": 5815,
              "nodeType": "StructuredDocumentation",
              "src": "81:165:9",
              "text": " @dev Required interface of an ERC1155 compliant contract, as defined in the\n https://eips.ethereum.org/EIPS/eip-1155[EIP].\n _Available since v3.1._"
            },
            "fullyImplemented": false,
            "id": 5933,
            "linearizedBaseContracts": [
              5933,
              6027
            ],
            "name": "IERC1155",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": {
                  "id": 5818,
                  "nodeType": "StructuredDocumentation",
                  "src": "283:121:9",
                  "text": " @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."
                },
                "id": 5830,
                "name": "TransferSingle",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 5829,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5820,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 5830,
                      "src": "430:24:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5819,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "430:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5822,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 5830,
                      "src": "456:20:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5821,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "456:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5824,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 5830,
                      "src": "478:18:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5823,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "478:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5826,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 5830,
                      "src": "498:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5825,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "498:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5828,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 5830,
                      "src": "510:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5827,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "510:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "429:95:9"
                },
                "src": "409:116:9"
              },
              {
                "anonymous": false,
                "documentation": {
                  "id": 5831,
                  "nodeType": "StructuredDocumentation",
                  "src": "531:144:9",
                  "text": " @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n transfers."
                },
                "id": 5845,
                "name": "TransferBatch",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 5844,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5833,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 5845,
                      "src": "700:24:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5832,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "700:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5835,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 5845,
                      "src": "726:20:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5834,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "726:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5837,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 5845,
                      "src": "748:18:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5836,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "748:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5840,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "ids",
                      "nodeType": "VariableDeclaration",
                      "scope": 5845,
                      "src": "768:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5838,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "768:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5839,
                        "nodeType": "ArrayTypeName",
                        "src": "768:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5843,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "values",
                      "nodeType": "VariableDeclaration",
                      "scope": 5845,
                      "src": "783:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5841,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "783:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5842,
                        "nodeType": "ArrayTypeName",
                        "src": "783:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "699:101:9"
                },
                "src": "680:121:9"
              },
              {
                "anonymous": false,
                "documentation": {
                  "id": 5846,
                  "nodeType": "StructuredDocumentation",
                  "src": "807:147:9",
                  "text": " @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n `approved`."
                },
                "id": 5854,
                "name": "ApprovalForAll",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 5853,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5848,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "scope": 5854,
                      "src": "980:23:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5847,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "980:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5850,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 5854,
                      "src": "1005:24:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5849,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1005:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5852,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "approved",
                      "nodeType": "VariableDeclaration",
                      "scope": 5854,
                      "src": "1031:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5851,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1031:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "979:66:9"
                },
                "src": "959:87:9"
              },
              {
                "anonymous": false,
                "documentation": {
                  "id": 5855,
                  "nodeType": "StructuredDocumentation",
                  "src": "1052:343:9",
                  "text": " @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n If an {URI} event was emitted for `id`, the standard\n https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n returned by {IERC1155MetadataURI-uri}."
                },
                "id": 5861,
                "name": "URI",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 5860,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5857,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 5861,
                      "src": "1410:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 5856,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1410:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5859,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 5861,
                      "src": "1424:18:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5858,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1424:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1409:34:9"
                },
                "src": "1400:44:9"
              },
              {
                "documentation": {
                  "id": 5862,
                  "nodeType": "StructuredDocumentation",
                  "src": "1450:173:9",
                  "text": " @dev Returns the amount of tokens of token type `id` owned by `account`.\n Requirements:\n - `account` cannot be the zero address."
                },
                "functionSelector": "00fdd58e",
                "id": 5871,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5867,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5864,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "scope": 5871,
                      "src": "1647:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5863,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1647:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5866,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 5871,
                      "src": "1664:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5865,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1664:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1646:29:9"
                },
                "returnParameters": {
                  "id": 5870,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5869,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5871,
                      "src": "1699:7:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5868,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1699:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1698:9:9"
                },
                "scope": 5933,
                "src": "1628:80:9",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 5872,
                  "nodeType": "StructuredDocumentation",
                  "src": "1714:188:9",
                  "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n Requirements:\n - `accounts` and `ids` must have the same length."
                },
                "functionSelector": "4e1273f4",
                "id": 5884,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOfBatch",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5879,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5875,
                      "mutability": "mutable",
                      "name": "accounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 5884,
                      "src": "1931:27:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5873,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1931:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5874,
                        "nodeType": "ArrayTypeName",
                        "src": "1931:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5878,
                      "mutability": "mutable",
                      "name": "ids",
                      "nodeType": "VariableDeclaration",
                      "scope": 5884,
                      "src": "1960:22:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5876,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1960:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5877,
                        "nodeType": "ArrayTypeName",
                        "src": "1960:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1930:53:9"
                },
                "returnParameters": {
                  "id": 5883,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5882,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5884,
                      "src": "2007:16:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5880,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2007:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5881,
                        "nodeType": "ArrayTypeName",
                        "src": "2007:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2006:18:9"
                },
                "scope": 5933,
                "src": "1907:118:9",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 5885,
                  "nodeType": "StructuredDocumentation",
                  "src": "2031:248:9",
                  "text": " @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n Emits an {ApprovalForAll} event.\n Requirements:\n - `operator` cannot be the caller."
                },
                "functionSelector": "a22cb465",
                "id": 5892,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setApprovalForAll",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5890,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5887,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 5892,
                      "src": "2311:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5886,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2311:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5889,
                      "mutability": "mutable",
                      "name": "approved",
                      "nodeType": "VariableDeclaration",
                      "scope": 5892,
                      "src": "2329:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5888,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2329:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2310:33:9"
                },
                "returnParameters": {
                  "id": 5891,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2352:0:9"
                },
                "scope": 5933,
                "src": "2284:69:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 5893,
                  "nodeType": "StructuredDocumentation",
                  "src": "2359:135:9",
                  "text": " @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n See {setApprovalForAll}."
                },
                "functionSelector": "e985e9c5",
                "id": 5902,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "isApprovedForAll",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5898,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5895,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "scope": 5902,
                      "src": "2525:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5894,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2525:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5897,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 5902,
                      "src": "2542:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5896,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2542:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2524:35:9"
                },
                "returnParameters": {
                  "id": 5901,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5900,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5902,
                      "src": "2583:4:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5899,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2583:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2582:6:9"
                },
                "scope": 5933,
                "src": "2499:90:9",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 5903,
                  "nodeType": "StructuredDocumentation",
                  "src": "2595:559:9",
                  "text": " @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."
                },
                "functionSelector": "f242432a",
                "id": 5916,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransferFrom",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5914,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5905,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 5916,
                      "src": "3185:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5904,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3185:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5907,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 5916,
                      "src": "3199:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5906,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3199:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5909,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 5916,
                      "src": "3211:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5908,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3211:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5911,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 5916,
                      "src": "3223:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5910,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3223:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5913,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 5916,
                      "src": "3239:19:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5912,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3239:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3184:75:9"
                },
                "returnParameters": {
                  "id": 5915,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3268:0:9"
                },
                "scope": 5933,
                "src": "3159:110:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 5917,
                  "nodeType": "StructuredDocumentation",
                  "src": "3275:390:9",
                  "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."
                },
                "functionSelector": "2eb2c2d6",
                "id": 5932,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "safeBatchTransferFrom",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5930,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5919,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 5932,
                      "src": "3701:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5918,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3701:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5921,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 5932,
                      "src": "3715:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5920,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3715:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5924,
                      "mutability": "mutable",
                      "name": "ids",
                      "nodeType": "VariableDeclaration",
                      "scope": 5932,
                      "src": "3727:22:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5922,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3727:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5923,
                        "nodeType": "ArrayTypeName",
                        "src": "3727:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5927,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 5932,
                      "src": "3751:26:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5925,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3751:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5926,
                        "nodeType": "ArrayTypeName",
                        "src": "3751:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5929,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 5932,
                      "src": "3779:19:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5928,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3779:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3700:99:9"
                },
                "returnParameters": {
                  "id": 5931,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3808:0:9"
                },
                "scope": 5933,
                "src": "3670:139:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 5934,
            "src": "247:3564:9"
          }
        ],
        "src": "32:3779:9"
      }
    },
    "contracts/interfaces/IERC1155Receiver.sol": {
      "id": 10,
      "AST": {
        "absolutePath": "contracts/interfaces/IERC1155Receiver.sol",
        "exportedSymbols": {
          "IERC1155Receiver": [
            5971
          ]
        },
        "id": 5972,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5935,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "32:22:10"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": {
              "id": 5936,
              "nodeType": "StructuredDocumentation",
              "src": "83:34:10",
              "text": " _Available since v3.1._"
            },
            "fullyImplemented": false,
            "id": 5971,
            "linearizedBaseContracts": [
              5971
            ],
            "name": "IERC1155Receiver",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "documentation": {
                  "id": 5937,
                  "nodeType": "StructuredDocumentation",
                  "src": "166:816:10",
                  "text": "@dev Handles the receipt of a single ERC1155 token type. This function is\ncalled at the end of a `safeTransferFrom` after the balance has been updated.\nTo accept the transfer, this must return\n`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n(i.e. 0xf23a6e61, or its own function selector).\n@param operator The address which initiated the transfer (i.e. msg.sender)\n@param from The address which previously owned the token\n@param id The ID of the token being transferred\n@param value The amount of tokens being transferred\n@param data Additional data with no specified format\n@return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"
                },
                "functionSelector": "f23a6e61",
                "id": 5952,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "onERC1155Received",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5948,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5939,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 5952,
                      "src": "1023:16:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5938,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1023:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5941,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 5952,
                      "src": "1049:12:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5940,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1049:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5943,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 5952,
                      "src": "1071:10:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5942,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1071:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5945,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 5952,
                      "src": "1091:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5944,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1091:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5947,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 5952,
                      "src": "1114:19:10",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5946,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1114:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1013:126:10"
                },
                "returnParameters": {
                  "id": 5951,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5950,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5952,
                      "src": "1173:6:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 5949,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1173:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1172:8:10"
                },
                "scope": 5971,
                "src": "987:194:10",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 5953,
                  "nodeType": "StructuredDocumentation",
                  "src": "1187:977:10",
                  "text": "@dev Handles the receipt of a multiple ERC1155 token types. This function\nis called at the end of a `safeBatchTransferFrom` after the balances have\nbeen updated. To accept the transfer(s), this must return\n`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n(i.e. 0xbc197c81, or its own function selector).\n@param operator The address which initiated the batch transfer (i.e. msg.sender)\n@param from The address which previously owned the token\n@param ids An array containing ids of each token being transferred (order and length must match values array)\n@param values An array containing amounts of each token being transferred (order and length must match ids array)\n@param data Additional data with no specified format\n@return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"
                },
                "functionSelector": "bc197c81",
                "id": 5970,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "onERC1155BatchReceived",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5966,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5955,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 5970,
                      "src": "2210:16:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5954,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2210:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5957,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 5970,
                      "src": "2236:12:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5956,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2236:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5960,
                      "mutability": "mutable",
                      "name": "ids",
                      "nodeType": "VariableDeclaration",
                      "scope": 5970,
                      "src": "2258:22:10",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5958,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2258:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5959,
                        "nodeType": "ArrayTypeName",
                        "src": "2258:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5963,
                      "mutability": "mutable",
                      "name": "values",
                      "nodeType": "VariableDeclaration",
                      "scope": 5970,
                      "src": "2290:25:10",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5961,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2290:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5962,
                        "nodeType": "ArrayTypeName",
                        "src": "2290:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5965,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 5970,
                      "src": "2325:19:10",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5964,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2325:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2200:150:10"
                },
                "returnParameters": {
                  "id": 5969,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5968,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5970,
                      "src": "2384:6:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 5967,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "2384:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2383:8:10"
                },
                "scope": 5971,
                "src": "2169:223:10",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 5972,
            "src": "118:2276:10"
          }
        ],
        "src": "32:2362:10"
      }
    },
    "contracts/interfaces/IERC1155Views.sol": {
      "id": 11,
      "AST": {
        "absolutePath": "contracts/interfaces/IERC1155Views.sol",
        "exportedSymbols": {
          "IERC1155Views": [
            6015
          ]
        },
        "id": 6016,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5973,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:22:11"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": {
              "id": 5974,
              "nodeType": "StructuredDocumentation",
              "src": "57:181:11",
              "text": " @title IERC1155Views - An optional utility interface to improve the ERC-1155 Standard.\n @dev This interface introduces some additional capabilities for ERC-1155 Tokens."
            },
            "fullyImplemented": false,
            "id": 6015,
            "linearizedBaseContracts": [
              6015
            ],
            "name": "IERC1155Views",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "documentation": {
                  "id": 5975,
                  "nodeType": "StructuredDocumentation",
                  "src": "270:150:11",
                  "text": " @dev Returns the total supply of the given token id\n @param objectId the id of the token whose availability you want to know "
                },
                "functionSelector": "bd85b039",
                "id": 5982,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5978,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5977,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 5982,
                      "src": "446:16:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5976,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "446:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "445:18:11"
                },
                "returnParameters": {
                  "id": 5981,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5980,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5982,
                      "src": "487:7:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5979,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "487:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "486:9:11"
                },
                "scope": 6015,
                "src": "425:71:11",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 5983,
                  "nodeType": "StructuredDocumentation",
                  "src": "502:134:11",
                  "text": " @dev Returns the name of the given token id\n @param objectId the id of the token whose name you want to know "
                },
                "functionSelector": "00ad800c",
                "id": 5990,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "name",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5986,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5985,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 5990,
                      "src": "655:16:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5984,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "655:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "654:18:11"
                },
                "returnParameters": {
                  "id": 5989,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5988,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5990,
                      "src": "696:13:11",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 5987,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "696:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "695:15:11"
                },
                "scope": 6015,
                "src": "641:70:11",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 5991,
                  "nodeType": "StructuredDocumentation",
                  "src": "717:138:11",
                  "text": " @dev Returns the symbol of the given token id\n @param objectId the id of the token whose symbol you want to know "
                },
                "functionSelector": "4e41a1fb",
                "id": 5998,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "symbol",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 5994,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5993,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 5998,
                      "src": "876:16:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5992,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "876:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "875:18:11"
                },
                "returnParameters": {
                  "id": 5997,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5996,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 5998,
                      "src": "917:13:11",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 5995,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "917:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "916:15:11"
                },
                "scope": 6015,
                "src": "860:72:11",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 5999,
                  "nodeType": "StructuredDocumentation",
                  "src": "938:142:11",
                  "text": " @dev Returns the decimals of the given token id\n @param objectId the id of the token whose decimals you want to know "
                },
                "functionSelector": "3f47e662",
                "id": 6006,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6002,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6001,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6006,
                      "src": "1103:16:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6000,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1103:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1102:18:11"
                },
                "returnParameters": {
                  "id": 6005,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6004,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6006,
                      "src": "1144:7:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6003,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1144:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1143:9:11"
                },
                "scope": 6015,
                "src": "1085:68:11",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6007,
                  "nodeType": "StructuredDocumentation",
                  "src": "1159:132:11",
                  "text": " @dev Returns the uri of the given token id\n @param objectId the id of the token whose uri you want to know "
                },
                "functionSelector": "0e89341c",
                "id": 6014,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "uri",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6010,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6009,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6014,
                      "src": "1309:16:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6008,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1309:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1308:18:11"
                },
                "returnParameters": {
                  "id": 6013,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6012,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6014,
                      "src": "1350:13:11",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6011,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1350:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1349:15:11"
                },
                "scope": 6015,
                "src": "1296:69:11",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6016,
            "src": "239:1128:11"
          }
        ],
        "src": "33:1334:11"
      }
    },
    "contracts/interfaces/IERC165.sol": {
      "id": 12,
      "AST": {
        "absolutePath": "contracts/interfaces/IERC165.sol",
        "exportedSymbols": {
          "IERC165": [
            6027
          ]
        },
        "id": 6028,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6017,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:22:12"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": {
              "id": 6018,
              "nodeType": "StructuredDocumentation",
              "src": "58:279:12",
              "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."
            },
            "fullyImplemented": false,
            "id": 6027,
            "linearizedBaseContracts": [
              6027
            ],
            "name": "IERC165",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "documentation": {
                  "id": 6019,
                  "nodeType": "StructuredDocumentation",
                  "src": "362:340:12",
                  "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."
                },
                "functionSelector": "01ffc9a7",
                "id": 6026,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "supportsInterface",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6022,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6021,
                      "mutability": "mutable",
                      "name": "interfaceId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6026,
                      "src": "734:18:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 6020,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "734:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "733:20:12"
                },
                "returnParameters": {
                  "id": 6025,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6024,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6026,
                      "src": "777:4:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6023,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "777:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "776:6:12"
                },
                "scope": 6027,
                "src": "707:76:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6028,
            "src": "338:447:12"
          }
        ],
        "src": "33:752:12"
      }
    },
    "contracts/interfaces/IERC20.sol": {
      "id": 13,
      "AST": {
        "absolutePath": "contracts/interfaces/IERC20.sol",
        "exportedSymbols": {
          "IERC20": [
            6105
          ]
        },
        "id": 6106,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6029,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:22:13"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": {
              "id": 6030,
              "nodeType": "StructuredDocumentation",
              "src": "57:70:13",
              "text": " @dev Interface of the ERC20 standard as defined in the EIP."
            },
            "fullyImplemented": false,
            "id": 6105,
            "linearizedBaseContracts": [
              6105
            ],
            "name": "IERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "documentation": {
                  "id": 6031,
                  "nodeType": "StructuredDocumentation",
                  "src": "151:66:13",
                  "text": " @dev Returns the amount of tokens in existence."
                },
                "functionSelector": "18160ddd",
                "id": 6036,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6032,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "242:2:13"
                },
                "returnParameters": {
                  "id": 6035,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6034,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6036,
                      "src": "268:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6033,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "268:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "267:9:13"
                },
                "scope": 6105,
                "src": "222:55:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6037,
                  "nodeType": "StructuredDocumentation",
                  "src": "283:72:13",
                  "text": " @dev Returns the amount of tokens owned by `account`."
                },
                "functionSelector": "70a08231",
                "id": 6044,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6040,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6039,
                      "mutability": "mutable",
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "scope": 6044,
                      "src": "379:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6038,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "379:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "378:17:13"
                },
                "returnParameters": {
                  "id": 6043,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6042,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6044,
                      "src": "419:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6041,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "419:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "418:9:13"
                },
                "scope": 6105,
                "src": "360:68:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6045,
                  "nodeType": "StructuredDocumentation",
                  "src": "434:209:13",
                  "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                },
                "functionSelector": "a9059cbb",
                "id": 6054,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6050,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6047,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nodeType": "VariableDeclaration",
                      "scope": 6054,
                      "src": "666:17:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6046,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "666:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6049,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6054,
                      "src": "685:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6048,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "685:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "665:35:13"
                },
                "returnParameters": {
                  "id": 6053,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6052,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6054,
                      "src": "719:4:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6051,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "719:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "718:6:13"
                },
                "scope": 6105,
                "src": "648:77:13",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6055,
                  "nodeType": "StructuredDocumentation",
                  "src": "731:264:13",
                  "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
                },
                "functionSelector": "dd62ed3e",
                "id": 6064,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6060,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6057,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 6064,
                      "src": "1019:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6056,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1019:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6059,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "scope": 6064,
                      "src": "1034:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6058,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1034:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1018:32:13"
                },
                "returnParameters": {
                  "id": 6063,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6062,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6064,
                      "src": "1074:7:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6061,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1074:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1073:9:13"
                },
                "scope": 6105,
                "src": "1000:83:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6065,
                  "nodeType": "StructuredDocumentation",
                  "src": "1089:642:13",
                  "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
                },
                "functionSelector": "095ea7b3",
                "id": 6074,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6070,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6067,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "scope": 6074,
                      "src": "1753:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6066,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1753:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6069,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6074,
                      "src": "1770:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6068,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1770:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1752:33:13"
                },
                "returnParameters": {
                  "id": 6073,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6072,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6074,
                      "src": "1804:4:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6071,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1804:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1803:6:13"
                },
                "scope": 6105,
                "src": "1736:74:13",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6075,
                  "nodeType": "StructuredDocumentation",
                  "src": "1816:296:13",
                  "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                },
                "functionSelector": "23b872dd",
                "id": 6086,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6082,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6077,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "scope": 6086,
                      "src": "2139:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6076,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2139:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6079,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nodeType": "VariableDeclaration",
                      "scope": 6086,
                      "src": "2155:17:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6078,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2155:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6081,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6086,
                      "src": "2174:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6080,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2174:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2138:51:13"
                },
                "returnParameters": {
                  "id": 6085,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6084,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6086,
                      "src": "2208:4:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6083,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2208:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2207:6:13"
                },
                "scope": 6105,
                "src": "2117:97:13",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "anonymous": false,
                "documentation": {
                  "id": 6087,
                  "nodeType": "StructuredDocumentation",
                  "src": "2220:158:13",
                  "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
                },
                "id": 6095,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 6094,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6089,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 6095,
                      "src": "2398:20:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6088,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2398:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6091,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 6095,
                      "src": "2420:18:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6090,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2420:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6093,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 6095,
                      "src": "2440:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6092,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2440:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2397:57:13"
                },
                "src": "2383:72:13"
              },
              {
                "anonymous": false,
                "documentation": {
                  "id": 6096,
                  "nodeType": "StructuredDocumentation",
                  "src": "2461:148:13",
                  "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
                },
                "id": 6104,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 6103,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6098,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 6104,
                      "src": "2629:21:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6097,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2629:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6100,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "scope": 6104,
                      "src": "2652:23:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6099,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2652:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6102,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 6104,
                      "src": "2677:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6101,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2677:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2628:63:13"
                },
                "src": "2614:78:13"
              }
            ],
            "scope": 6106,
            "src": "128:2566:13"
          }
        ],
        "src": "33:2661:13"
      }
    },
    "contracts/interfaces/IERC20Data.sol": {
      "id": 14,
      "AST": {
        "absolutePath": "contracts/interfaces/IERC20Data.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ]
        },
        "id": 6120,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6107,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:22:14"
          },
          {
            "absolutePath": "contracts/interfaces/IBaseTokenData.sol",
            "file": "./IBaseTokenData.sol",
            "id": 6108,
            "nodeType": "ImportDirective",
            "scope": 6120,
            "sourceUnit": 5765,
            "src": "57:30:14",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "./IERC20.sol",
            "id": 6109,
            "nodeType": "ImportDirective",
            "scope": 6120,
            "sourceUnit": 6106,
            "src": "88:22:14",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 6110,
                  "name": "IBaseTokenData",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5764,
                  "src": "136:14:14"
                },
                "id": 6111,
                "nodeType": "InheritanceSpecifier",
                "src": "136:14:14"
              },
              {
                "baseName": {
                  "id": 6112,
                  "name": "IERC20",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 6105,
                  "src": "152:6:14"
                },
                "id": 6113,
                "nodeType": "InheritanceSpecifier",
                "src": "152:6:14"
              }
            ],
            "contractDependencies": [
              5764,
              6105
            ],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 6119,
            "linearizedBaseContracts": [
              6119,
              6105,
              5764
            ],
            "name": "IERC20Data",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "313ce567",
                "id": 6118,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6114,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "182:2:14"
                },
                "returnParameters": {
                  "id": 6117,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6116,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6118,
                      "src": "208:7:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6115,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "208:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "207:9:14"
                },
                "scope": 6119,
                "src": "165:52:14",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6120,
            "src": "112:107:14"
          }
        ],
        "src": "33:186:14"
      }
    },
    "contracts/interfaces/IERC20WrapperV1.sol": {
      "id": 15,
      "AST": {
        "absolutePath": "contracts/interfaces/IERC20WrapperV1.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ],
          "IERC1155": [
            5933
          ],
          "IERC1155Receiver": [
            5971
          ],
          "IERC1155Views": [
            6015
          ],
          "IERC165": [
            6027
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ],
          "IERC20WrapperV1": [
            6161
          ],
          "IEthItemInteroperableInterface": [
            6250
          ],
          "IEthItemMainInterface": [
            6365
          ],
          "IEthItemModelBase": [
            6392
          ]
        },
        "id": 6162,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6121,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "34:22:15"
          },
          {
            "absolutePath": "contracts/interfaces/IEthItemModelBase.sol",
            "file": "./IEthItemModelBase.sol",
            "id": 6122,
            "nodeType": "ImportDirective",
            "scope": 6162,
            "sourceUnit": 6393,
            "src": "60:33:15",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 6124,
                  "name": "IEthItemModelBase",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 6392,
                  "src": "720:17:15"
                },
                "id": 6125,
                "nodeType": "InheritanceSpecifier",
                "src": "720:17:15"
              }
            ],
            "contractDependencies": [
              5764,
              5933,
              6015,
              6027,
              6365,
              6392
            ],
            "contractKind": "interface",
            "documentation": {
              "id": 6123,
              "nodeType": "StructuredDocumentation",
              "src": "97:592:15",
              "text": " @title ERC20-Based EthItem, version 1.\n @dev All the wrapped ERC20 Tokens will be created following this Model.\n The minting operation can be done by calling the appropriate method given in this interface.\n The burning operation will send back the original wrapped ERC20 amount.\n To initalize it, the original 'init(address,string,string)'\n function of the EthItem Token Standard will be used, but the first address parameter will be the original ERC20 Source Contract to Wrap, and NOT the ERC20Model, which is always taken by the Contract who creates the Wrapper."
            },
            "fullyImplemented": false,
            "id": 6161,
            "linearizedBaseContracts": [
              6161,
              6392,
              6365,
              5764,
              6015,
              5933,
              6027
            ],
            "name": "IERC20WrapperV1",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "documentation": {
                  "id": 6126,
                  "nodeType": "StructuredDocumentation",
                  "src": "747:180:15",
                  "text": " @param objectId the Object Id you want to know info about\n @return erc20TokenAddress the wrapped ERC20 Token address corresponding to the given objectId"
                },
                "functionSelector": "023b04b2",
                "id": 6133,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "source",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6129,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6128,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6133,
                      "src": "949:16:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6127,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "949:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "948:18:15"
                },
                "returnParameters": {
                  "id": 6132,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6131,
                      "mutability": "mutable",
                      "name": "erc20TokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6133,
                      "src": "990:25:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6130,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "990:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "989:27:15"
                },
                "scope": 6161,
                "src": "933:84:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6134,
                  "nodeType": "StructuredDocumentation",
                  "src": "1026:205:15",
                  "text": " @param erc20TokenAddress the wrapped ERC20 Token address you want to know info about\n @return objectId the id in the collection which correspondes to the given erc20TokenAddress"
                },
                "functionSelector": "1bf8ee70",
                "id": 6141,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "object",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6137,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6136,
                      "mutability": "mutable",
                      "name": "erc20TokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6141,
                      "src": "1253:25:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6135,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1253:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1252:27:15"
                },
                "returnParameters": {
                  "id": 6140,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6139,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6141,
                      "src": "1303:16:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6138,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1303:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1302:18:15"
                },
                "scope": 6161,
                "src": "1237:84:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6142,
                  "nodeType": "StructuredDocumentation",
                  "src": "1329:710:15",
                  "text": " @dev Mint operation.\n It inhibits and bypasses the original EthItem Token Standard 'mint(uint256,string)'.\n The logic will execute a transferFrom call to the given erc20TokenAddress to transfer the chosed amount of tokens\n @param erc20TokenAddress The token address to wrap.\n @param amount The token amount to wrap\n @return objectId the id given by this collection to the given erc20TokenAddress. It can be brand new if it is the first time this collection is created. Otherwhise, the firstly-created objectId value will be used.\n @return wrapperAddress The address ethItemERC20Wrapper generated after the creation of the returned objectId"
                },
                "functionSelector": "40c10f19",
                "id": 6153,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6147,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6144,
                      "mutability": "mutable",
                      "name": "erc20TokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6153,
                      "src": "2059:25:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6143,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2059:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6146,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6153,
                      "src": "2086:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6145,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2086:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2058:43:15"
                },
                "returnParameters": {
                  "id": 6152,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6149,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6153,
                      "src": "2120:16:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6148,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2120:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6151,
                      "mutability": "mutable",
                      "name": "wrapperAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6153,
                      "src": "2138:22:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6150,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2138:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2119:42:15"
                },
                "scope": 6161,
                "src": "2045:117:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "ce1570dc",
                "id": 6160,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mintETH",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6154,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2186:2:15"
                },
                "returnParameters": {
                  "id": 6159,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6156,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6160,
                      "src": "2215:16:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6155,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2215:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6158,
                      "mutability": "mutable",
                      "name": "wrapperAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6160,
                      "src": "2233:22:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6157,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2233:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2214:42:15"
                },
                "scope": 6161,
                "src": "2170:87:15",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6162,
            "src": "691:1569:15"
          }
        ],
        "src": "34:2226:15"
      }
    },
    "contracts/interfaces/IERC721Receiver.sol": {
      "id": 16,
      "AST": {
        "absolutePath": "contracts/interfaces/IERC721Receiver.sol",
        "exportedSymbols": {
          "IERC721Receiver": [
            6179
          ]
        },
        "id": 6180,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6163,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:22:16"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": {
              "id": 6164,
              "nodeType": "StructuredDocumentation",
              "src": "57:152:16",
              "text": " @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."
            },
            "fullyImplemented": false,
            "id": 6179,
            "linearizedBaseContracts": [
              6179
            ],
            "name": "IERC721Receiver",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "documentation": {
                  "id": 6165,
                  "nodeType": "StructuredDocumentation",
                  "src": "242:485:16",
                  "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`."
                },
                "functionSelector": "150b7a02",
                "id": 6178,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "onERC721Received",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6174,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6167,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 6178,
                      "src": "758:16:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6166,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "758:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6169,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 6178,
                      "src": "776:12:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6168,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "776:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6171,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6178,
                      "src": "790:15:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6170,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "790:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6173,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 6178,
                      "src": "807:19:16",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6172,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "807:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "757:70:16"
                },
                "returnParameters": {
                  "id": 6177,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6176,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6178,
                      "src": "846:6:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 6175,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "846:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "845:8:16"
                },
                "scope": 6179,
                "src": "732:122:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6180,
            "src": "210:646:16"
          }
        ],
        "src": "33:823:16"
      }
    },
    "contracts/interfaces/IEthItemInteroperableInterface.sol": {
      "id": 17,
      "AST": {
        "absolutePath": "contracts/interfaces/IEthItemInteroperableInterface.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ],
          "IEthItemInteroperableInterface": [
            6250
          ]
        },
        "id": 6251,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6181,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:22:17"
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "./IERC20.sol",
            "id": 6182,
            "nodeType": "ImportDirective",
            "scope": 6251,
            "sourceUnit": 6106,
            "src": "57:22:17",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20Data.sol",
            "file": "./IERC20Data.sol",
            "id": 6183,
            "nodeType": "ImportDirective",
            "scope": 6251,
            "sourceUnit": 6120,
            "src": "80:26:17",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 6184,
                  "name": "IERC20",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 6105,
                  "src": "152:6:17"
                },
                "id": 6185,
                "nodeType": "InheritanceSpecifier",
                "src": "152:6:17"
              },
              {
                "baseName": {
                  "id": 6186,
                  "name": "IERC20Data",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 6119,
                  "src": "160:10:17"
                },
                "id": 6187,
                "nodeType": "InheritanceSpecifier",
                "src": "160:10:17"
              }
            ],
            "contractDependencies": [
              5764,
              6105,
              6119
            ],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 6250,
            "linearizedBaseContracts": [
              6250,
              6119,
              6105,
              5764
            ],
            "name": "IEthItemInteroperableInterface",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "620b29cd",
                "id": 6198,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "init",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6196,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6189,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 6198,
                      "src": "192:10:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6188,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "192:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6191,
                      "mutability": "mutable",
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "scope": 6198,
                      "src": "204:20:17",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6190,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "204:6:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6193,
                      "mutability": "mutable",
                      "name": "symbol",
                      "nodeType": "VariableDeclaration",
                      "scope": 6198,
                      "src": "226:22:17",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6192,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "226:6:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6195,
                      "mutability": "mutable",
                      "name": "decimals",
                      "nodeType": "VariableDeclaration",
                      "scope": 6198,
                      "src": "250:16:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6194,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "250:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "191:76:17"
                },
                "returnParameters": {
                  "id": 6197,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "276:0:17"
                },
                "scope": 6250,
                "src": "178:99:17",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "1836b97d",
                "id": 6203,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mainInterface",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6199,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "305:2:17"
                },
                "returnParameters": {
                  "id": 6202,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6201,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6203,
                      "src": "331:7:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6200,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "331:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "330:9:17"
                },
                "scope": 6250,
                "src": "283:57:17",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "d4d5a06d",
                "id": 6208,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "objectId",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6204,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "363:2:17"
                },
                "returnParameters": {
                  "id": 6207,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6206,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6208,
                      "src": "389:7:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6205,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "389:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "388:9:17"
                },
                "scope": 6250,
                "src": "346:52:17",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "40c10f19",
                "id": 6215,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6213,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6210,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 6215,
                      "src": "418:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6209,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "418:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6212,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6215,
                      "src": "433:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6211,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "433:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "417:31:17"
                },
                "returnParameters": {
                  "id": 6214,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "457:0:17"
                },
                "scope": 6250,
                "src": "404:54:17",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "9dc29fac",
                "id": 6222,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "burn",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6220,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6217,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 6222,
                      "src": "478:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6216,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "478:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6219,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6222,
                      "src": "493:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6218,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "493:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "477:31:17"
                },
                "returnParameters": {
                  "id": 6221,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "517:0:17"
                },
                "scope": 6250,
                "src": "464:54:17",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "7c629501",
                "id": 6229,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "permitNonce",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6225,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6224,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "scope": 6229,
                      "src": "545:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6223,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "545:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "544:16:17"
                },
                "returnParameters": {
                  "id": 6228,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6227,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6229,
                      "src": "583:7:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6226,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "583:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "582:9:17"
                },
                "scope": 6250,
                "src": "524:68:17",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "48613c28",
                "id": 6244,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6242,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6231,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 6244,
                      "src": "614:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6230,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "614:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6233,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "scope": 6244,
                      "src": "629:15:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6232,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "629:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6235,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 6244,
                      "src": "646:10:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6234,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "646:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6237,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 6244,
                      "src": "658:7:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6236,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "658:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6239,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 6244,
                      "src": "667:9:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6238,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "667:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6241,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 6244,
                      "src": "678:9:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6240,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "678:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "613:75:17"
                },
                "returnParameters": {
                  "id": 6243,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "697:0:17"
                },
                "scope": 6250,
                "src": "598:100:17",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "881d697e",
                "id": 6249,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "interoperableInterfaceVersion",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6245,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "742:2:17"
                },
                "returnParameters": {
                  "id": 6248,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6247,
                      "mutability": "mutable",
                      "name": "ethItemInteroperableInterfaceVersion",
                      "nodeType": "VariableDeclaration",
                      "scope": 6249,
                      "src": "767:44:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6246,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "767:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "766:46:17"
                },
                "scope": 6250,
                "src": "704:109:17",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6251,
            "src": "108:707:17"
          }
        ],
        "src": "33:782:17"
      }
    },
    "contracts/interfaces/IEthItemMainInterface.sol": {
      "id": 18,
      "AST": {
        "absolutePath": "contracts/interfaces/IEthItemMainInterface.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ],
          "IERC1155": [
            5933
          ],
          "IERC1155Receiver": [
            5971
          ],
          "IERC1155Views": [
            6015
          ],
          "IERC165": [
            6027
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ],
          "IEthItemInteroperableInterface": [
            6250
          ],
          "IEthItemMainInterface": [
            6365
          ]
        },
        "id": 6366,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6252,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "33:22:18"
          },
          {
            "absolutePath": "contracts/interfaces/IERC1155.sol",
            "file": "./IERC1155.sol",
            "id": 6253,
            "nodeType": "ImportDirective",
            "scope": 6366,
            "sourceUnit": 5934,
            "src": "57:24:18",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC1155Receiver.sol",
            "file": "./IERC1155Receiver.sol",
            "id": 6254,
            "nodeType": "ImportDirective",
            "scope": 6366,
            "sourceUnit": 5972,
            "src": "82:32:18",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC1155Views.sol",
            "file": "./IERC1155Views.sol",
            "id": 6255,
            "nodeType": "ImportDirective",
            "scope": 6366,
            "sourceUnit": 6016,
            "src": "115:29:18",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IEthItemInteroperableInterface.sol",
            "file": "./IEthItemInteroperableInterface.sol",
            "id": 6256,
            "nodeType": "ImportDirective",
            "scope": 6366,
            "sourceUnit": 6251,
            "src": "145:46:18",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IBaseTokenData.sol",
            "file": "./IBaseTokenData.sol",
            "id": 6257,
            "nodeType": "ImportDirective",
            "scope": 6366,
            "sourceUnit": 5765,
            "src": "192:30:18",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 6258,
                  "name": "IERC1155",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5933,
                  "src": "259:8:18"
                },
                "id": 6259,
                "nodeType": "InheritanceSpecifier",
                "src": "259:8:18"
              },
              {
                "baseName": {
                  "id": 6260,
                  "name": "IERC1155Views",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 6015,
                  "src": "269:13:18"
                },
                "id": 6261,
                "nodeType": "InheritanceSpecifier",
                "src": "269:13:18"
              },
              {
                "baseName": {
                  "id": 6262,
                  "name": "IBaseTokenData",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5764,
                  "src": "284:14:18"
                },
                "id": 6263,
                "nodeType": "InheritanceSpecifier",
                "src": "284:14:18"
              }
            ],
            "contractDependencies": [
              5764,
              5933,
              6015,
              6027
            ],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 6365,
            "linearizedBaseContracts": [
              6365,
              5764,
              6015,
              5933,
              6027
            ],
            "name": "IEthItemMainInterface",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "b2b45df5",
                "id": 6272,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "init",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6270,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6265,
                      "mutability": "mutable",
                      "name": "interfaceModel",
                      "nodeType": "VariableDeclaration",
                      "scope": 6272,
                      "src": "329:22:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6264,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "329:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6267,
                      "mutability": "mutable",
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "scope": 6272,
                      "src": "361:20:18",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6266,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "361:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6269,
                      "mutability": "mutable",
                      "name": "symbol",
                      "nodeType": "VariableDeclaration",
                      "scope": 6272,
                      "src": "391:22:18",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6268,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "391:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "319:100:18"
                },
                "returnParameters": {
                  "id": 6271,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "428:0:18"
                },
                "scope": 6365,
                "src": "306:123:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "434d7d92",
                "id": 6277,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mainInterfaceVersion",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6273,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "464:2:18"
                },
                "returnParameters": {
                  "id": 6276,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6275,
                      "mutability": "mutable",
                      "name": "ethItemInteroperableVersion",
                      "nodeType": "VariableDeclaration",
                      "scope": 6277,
                      "src": "489:35:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6274,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "489:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "488:37:18"
                },
                "scope": 6365,
                "src": "435:91:18",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "40dc7bff",
                "id": 6286,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "toInteroperableInterfaceAmount",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6282,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6279,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6286,
                      "src": "572:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6278,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "572:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6281,
                      "mutability": "mutable",
                      "name": "ethItemAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6286,
                      "src": "590:21:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6280,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "590:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "571:41:18"
                },
                "returnParameters": {
                  "id": 6285,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6284,
                      "mutability": "mutable",
                      "name": "interoperableInterfaceAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6286,
                      "src": "636:36:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6283,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "636:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "635:38:18"
                },
                "scope": 6365,
                "src": "532:142:18",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "45a0ef80",
                "id": 6295,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "toMainInterfaceAmount",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6291,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6288,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6295,
                      "src": "711:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6287,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "711:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6290,
                      "mutability": "mutable",
                      "name": "erc20WrapperAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6295,
                      "src": "729:26:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6289,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "729:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "710:46:18"
                },
                "returnParameters": {
                  "id": 6294,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6293,
                      "mutability": "mutable",
                      "name": "mainInterfaceAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6295,
                      "src": "780:27:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6292,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "780:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "779:29:18"
                },
                "scope": 6365,
                "src": "680:129:18",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "2d7f1d2b",
                "id": 6302,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "interoperableInterfaceModel",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6296,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "851:2:18"
                },
                "returnParameters": {
                  "id": 6301,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6298,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6302,
                      "src": "877:7:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6297,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "877:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6300,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6302,
                      "src": "886:7:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6299,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "886:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "876:18:18"
                },
                "scope": 6365,
                "src": "815:80:18",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "0c0f6b71",
                "id": 6310,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "asInteroperable",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6305,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6304,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6310,
                      "src": "926:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6303,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "926:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "925:18:18"
                },
                "returnParameters": {
                  "id": 6309,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6308,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6310,
                      "src": "967:30:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                        "typeString": "contract IEthItemInteroperableInterface"
                      },
                      "typeName": {
                        "id": 6307,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 6306,
                          "name": "IEthItemInteroperableInterface",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 6250,
                          "src": "967:30:18"
                        },
                        "referencedDeclaration": 6250,
                        "src": "967:30:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEthItemInteroperableInterface_$6250",
                          "typeString": "contract IEthItemInteroperableInterface"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "966:32:18"
                },
                "scope": 6365,
                "src": "901:98:18",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "e82b15f4",
                "id": 6323,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "emitTransferSingleEvent",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6321,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6312,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "scope": 6323,
                      "src": "1038:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6311,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1038:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6314,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 6323,
                      "src": "1054:12:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6313,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1054:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6316,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 6323,
                      "src": "1068:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6315,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1068:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6318,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6323,
                      "src": "1080:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6317,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1080:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6320,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6323,
                      "src": "1098:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6319,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1098:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1037:76:18"
                },
                "returnParameters": {
                  "id": 6322,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1122:0:18"
                },
                "scope": 6365,
                "src": "1005:118:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "77097fc8",
                "id": 6334,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6328,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6325,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6334,
                      "src": "1143:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6324,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1143:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6327,
                      "mutability": "mutable",
                      "name": "partialUri",
                      "nodeType": "VariableDeclaration",
                      "scope": 6334,
                      "src": "1159:26:18",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6326,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1159:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1142:44:18"
                },
                "returnParameters": {
                  "id": 6333,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6330,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6334,
                      "src": "1221:7:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6329,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1221:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6332,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6334,
                      "src": "1230:7:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6331,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1230:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1220:18:18"
                },
                "scope": 6365,
                "src": "1129:110:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "b390c0ab",
                "id": 6341,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "burn",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6339,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6336,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6341,
                      "src": "1268:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6335,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1268:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6338,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6341,
                      "src": "1294:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6337,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1294:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1258:56:18"
                },
                "returnParameters": {
                  "id": 6340,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1323:0:18"
                },
                "scope": 6365,
                "src": "1245:79:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "83ca4b6f",
                "id": 6350,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "burnBatch",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6348,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6344,
                      "mutability": "mutable",
                      "name": "objectIds",
                      "nodeType": "VariableDeclaration",
                      "scope": 6350,
                      "src": "1358:28:18",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6342,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1358:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6343,
                        "nodeType": "ArrayTypeName",
                        "src": "1358:9:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6347,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 6350,
                      "src": "1396:26:18",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6345,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1396:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6346,
                        "nodeType": "ArrayTypeName",
                        "src": "1396:9:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1348:80:18"
                },
                "returnParameters": {
                  "id": 6349,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1437:0:18"
                },
                "scope": 6365,
                "src": "1330:108:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "anonymous": false,
                "id": 6356,
                "name": "NewItem",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 6355,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6352,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6356,
                      "src": "1458:24:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6351,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1458:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6354,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6356,
                      "src": "1484:28:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6353,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1484:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1457:56:18"
                },
                "src": "1444:70:18"
              },
              {
                "anonymous": false,
                "id": 6364,
                "name": "Mint",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 6363,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6358,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6364,
                      "src": "1530:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6357,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1530:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6360,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6364,
                      "src": "1548:20:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6359,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1548:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6362,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 6364,
                      "src": "1570:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6361,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1570:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1529:56:18"
                },
                "src": "1519:67:18"
              }
            ],
            "scope": 6366,
            "src": "224:1364:18"
          }
        ],
        "src": "33:1556:18"
      }
    },
    "contracts/interfaces/IEthItemModelBase.sol": {
      "id": 19,
      "AST": {
        "absolutePath": "contracts/interfaces/IEthItemModelBase.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ],
          "IERC1155": [
            5933
          ],
          "IERC1155Receiver": [
            5971
          ],
          "IERC1155Views": [
            6015
          ],
          "IERC165": [
            6027
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ],
          "IEthItemInteroperableInterface": [
            6250
          ],
          "IEthItemMainInterface": [
            6365
          ],
          "IEthItemModelBase": [
            6392
          ]
        },
        "id": 6393,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6367,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "34:22:19"
          },
          {
            "absolutePath": "contracts/interfaces/IEthItemMainInterface.sol",
            "file": "./IEthItemMainInterface.sol",
            "id": 6368,
            "nodeType": "ImportDirective",
            "scope": 6393,
            "sourceUnit": 6366,
            "src": "60:37:19",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 6370,
                  "name": "IEthItemMainInterface",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 6365,
                  "src": "227:21:19"
                },
                "id": 6371,
                "nodeType": "InheritanceSpecifier",
                "src": "227:21:19"
              }
            ],
            "contractDependencies": [
              5764,
              5933,
              6015,
              6027,
              6365
            ],
            "contractKind": "interface",
            "documentation": {
              "id": 6369,
              "nodeType": "StructuredDocumentation",
              "src": "101:93:19",
              "text": " @dev This interface contains the commonn data provided by all the EthItem models"
            },
            "fullyImplemented": false,
            "id": 6392,
            "linearizedBaseContracts": [
              6392,
              6365,
              5764,
              6015,
              5933,
              6027
            ],
            "name": "IEthItemModelBase",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "documentation": {
                  "id": 6372,
                  "nodeType": "StructuredDocumentation",
                  "src": "258:312:19",
                  "text": " @dev Contract Initialization, the caller of this method should be a Contract containing the logic to provide the EthItemERC20WrapperModel to be used to create ERC20-based objectIds\n @param name the chosen name for this NFT\n @param symbol the chosen symbol (Ticker) for this NFT"
                },
                "functionSelector": "7029144c",
                "id": 6379,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "init",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6377,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6374,
                      "mutability": "mutable",
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "scope": 6379,
                      "src": "590:20:19",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6373,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "590:6:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6376,
                      "mutability": "mutable",
                      "name": "symbol",
                      "nodeType": "VariableDeclaration",
                      "scope": 6379,
                      "src": "612:22:19",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6375,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "612:6:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "589:46:19"
                },
                "returnParameters": {
                  "id": 6378,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "644:0:19"
                },
                "scope": 6392,
                "src": "576:69:19",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6380,
                  "nodeType": "StructuredDocumentation",
                  "src": "653:105:19",
                  "text": " @return modelVersionNumber The version number of the Model, it should be progressive"
                },
                "functionSelector": "edb3ba0b",
                "id": 6385,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "modelVersion",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6381,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "785:2:19"
                },
                "returnParameters": {
                  "id": 6384,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6383,
                      "mutability": "mutable",
                      "name": "modelVersionNumber",
                      "nodeType": "VariableDeclaration",
                      "scope": 6385,
                      "src": "810:26:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6382,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "810:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "809:28:19"
                },
                "scope": 6392,
                "src": "764:74:19",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6386,
                  "nodeType": "StructuredDocumentation",
                  "src": "846:102:19",
                  "text": " @return factoryAddress the address of the Contract which initialized this EthItem"
                },
                "functionSelector": "c45a0155",
                "id": 6391,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "factory",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6387,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "970:2:19"
                },
                "returnParameters": {
                  "id": 6390,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6389,
                      "mutability": "mutable",
                      "name": "factoryAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6391,
                      "src": "995:22:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6388,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "995:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "994:24:19"
                },
                "scope": 6392,
                "src": "954:65:19",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6393,
            "src": "196:826:19"
          }
        ],
        "src": "34:988:19"
      }
    },
    "contracts/interfaces/IEthItemOrchestrator.sol": {
      "id": 20,
      "AST": {
        "absolutePath": "contracts/interfaces/IEthItemOrchestrator.sol",
        "exportedSymbols": {
          "IDoubleProxy": [
            5811
          ],
          "IERC1155Receiver": [
            5971
          ],
          "IERC721Receiver": [
            6179
          ],
          "IEthItemOrchestrator": [
            6536
          ],
          "IMVDFunctionalitiesManager": [
            6812
          ],
          "IMVDProxy": [
            7099
          ],
          "IStateHolder": [
            8197
          ]
        },
        "id": 6541,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6394,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "32:22:20"
          },
          {
            "absolutePath": "contracts/interfaces/IERC721Receiver.sol",
            "file": "./IERC721Receiver.sol",
            "id": 6395,
            "nodeType": "ImportDirective",
            "scope": 6541,
            "sourceUnit": 6180,
            "src": "56:31:20",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC1155Receiver.sol",
            "file": "./IERC1155Receiver.sol",
            "id": 6396,
            "nodeType": "ImportDirective",
            "scope": 6541,
            "sourceUnit": 5972,
            "src": "88:32:20",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 6397,
                  "name": "IERC721Receiver",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 6179,
                  "src": "158:15:20"
                },
                "id": 6398,
                "nodeType": "InheritanceSpecifier",
                "src": "158:15:20"
              },
              {
                "baseName": {
                  "id": 6399,
                  "name": "IERC1155Receiver",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5971,
                  "src": "175:16:20"
                },
                "id": 6400,
                "nodeType": "InheritanceSpecifier",
                "src": "175:16:20"
              }
            ],
            "contractDependencies": [
              5971,
              6179
            ],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 6536,
            "linearizedBaseContracts": [
              6536,
              5971,
              6179
            ],
            "name": "IEthItemOrchestrator",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "fe5b38e4",
                "id": 6406,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "factories",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6401,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "217:2:20"
                },
                "returnParameters": {
                  "id": 6405,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6404,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6406,
                      "src": "242:16:20",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6402,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "242:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6403,
                        "nodeType": "ArrayTypeName",
                        "src": "242:9:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "241:18:20"
                },
                "scope": 6536,
                "src": "199:61:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "c45a0155",
                "id": 6411,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "factory",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6407,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "282:2:20"
                },
                "returnParameters": {
                  "id": 6410,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6409,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6411,
                      "src": "307:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6408,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "307:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "306:9:20"
                },
                "scope": 6536,
                "src": "266:50:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "5bb47808",
                "id": 6416,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFactory",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6414,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6413,
                      "mutability": "mutable",
                      "name": "newFactory",
                      "nodeType": "VariableDeclaration",
                      "scope": 6416,
                      "src": "342:18:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6412,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "342:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "341:20:20"
                },
                "returnParameters": {
                  "id": 6415,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "370:0:20"
                },
                "scope": 6536,
                "src": "322:49:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "c67ce254",
                "id": 6422,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "knowledgeBases",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6417,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "400:2:20"
                },
                "returnParameters": {
                  "id": 6421,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6420,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6422,
                      "src": "425:16:20",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6418,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "425:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6419,
                        "nodeType": "ArrayTypeName",
                        "src": "425:9:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "424:18:20"
                },
                "scope": 6536,
                "src": "377:66:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "f997cc25",
                "id": 6427,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "knowledgeBase",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6423,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "471:2:20"
                },
                "returnParameters": {
                  "id": 6426,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6425,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6427,
                      "src": "496:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6424,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "496:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "495:9:20"
                },
                "scope": 6536,
                "src": "449:56:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "1444133a",
                "id": 6432,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setKnowledgeBase",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6430,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6429,
                      "mutability": "mutable",
                      "name": "newKnowledgeBase",
                      "nodeType": "VariableDeclaration",
                      "scope": 6432,
                      "src": "537:24:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6428,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "537:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "536:26:20"
                },
                "returnParameters": {
                  "id": 6431,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "571:0:20"
                },
                "scope": 6536,
                "src": "511:61:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "8b8b2c36",
                "id": 6437,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "ENSController",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6433,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "600:2:20"
                },
                "returnParameters": {
                  "id": 6436,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6435,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6437,
                      "src": "626:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6434,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "626:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "625:9:20"
                },
                "scope": 6536,
                "src": "578:57:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "7d73395e",
                "id": 6442,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setENSController",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6440,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6439,
                      "mutability": "mutable",
                      "name": "newEnsController",
                      "nodeType": "VariableDeclaration",
                      "scope": 6442,
                      "src": "667:24:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6438,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "667:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "666:26:20"
                },
                "returnParameters": {
                  "id": 6441,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "701:0:20"
                },
                "scope": 6536,
                "src": "641:61:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "cccc2f60",
                "id": 6457,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferENS",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6455,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6444,
                      "mutability": "mutable",
                      "name": "receiver",
                      "nodeType": "VariableDeclaration",
                      "scope": 6457,
                      "src": "729:16:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6443,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "729:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6446,
                      "mutability": "mutable",
                      "name": "domainNode",
                      "nodeType": "VariableDeclaration",
                      "scope": 6457,
                      "src": "747:18:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6445,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "747:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6448,
                      "mutability": "mutable",
                      "name": "domainId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6457,
                      "src": "767:16:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6447,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "767:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6450,
                      "mutability": "mutable",
                      "name": "reclaimFirst",
                      "nodeType": "VariableDeclaration",
                      "scope": 6457,
                      "src": "785:17:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6449,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "785:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6452,
                      "mutability": "mutable",
                      "name": "safeTransferFrom",
                      "nodeType": "VariableDeclaration",
                      "scope": 6457,
                      "src": "804:21:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6451,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "804:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6454,
                      "mutability": "mutable",
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 6457,
                      "src": "827:22:20",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6453,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "827:5:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "728:122:20"
                },
                "returnParameters": {
                  "id": 6456,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "859:0:20"
                },
                "scope": 6536,
                "src": "708:152:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6458,
                  "nodeType": "StructuredDocumentation",
                  "src": "866:80:20",
                  "text": " @dev GET - The DoubleProxy of the DFO linked to this Contract"
                },
                "functionSelector": "4eb9b592",
                "id": 6463,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "doubleProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6459,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "971:2:20"
                },
                "returnParameters": {
                  "id": 6462,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6461,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6463,
                      "src": "997:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6460,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "997:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "996:9:20"
                },
                "scope": 6536,
                "src": "951:55:20",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6464,
                  "nodeType": "StructuredDocumentation",
                  "src": "1012:201:20",
                  "text": " @dev SET - The DoubleProxy of the DFO linked to this Contract\n It can be done only through a Proposal in the Linked DFO\n @param newDoubleProxy the new DoubleProxy address"
                },
                "functionSelector": "cbd99d03",
                "id": 6469,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setDoubleProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6467,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6466,
                      "mutability": "mutable",
                      "name": "newDoubleProxy",
                      "nodeType": "VariableDeclaration",
                      "scope": 6469,
                      "src": "1242:22:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6465,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1242:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1241:24:20"
                },
                "returnParameters": {
                  "id": 6468,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1274:0:20"
                },
                "scope": 6536,
                "src": "1218:57:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6470,
                  "nodeType": "StructuredDocumentation",
                  "src": "1281:259:20",
                  "text": " @dev SET - The address of the Smart Contract whose code will serve as a model for all the EthItemERC20Wrappers (please see the eth-item-token-standard for further information).\n It can be done only through a Proposal in the Linked DFO"
                },
                "functionSelector": "c63ae628",
                "id": 6475,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setEthItemInteroperableInterfaceModel",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6473,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6472,
                      "mutability": "mutable",
                      "name": "ethItemInteroperableInterfaceModelAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6475,
                      "src": "1592:49:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6471,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1592:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1591:51:20"
                },
                "returnParameters": {
                  "id": 6474,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1651:0:20"
                },
                "scope": 6536,
                "src": "1545:107:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6476,
                  "nodeType": "StructuredDocumentation",
                  "src": "1658:134:20",
                  "text": " @dev SET - The address of the Native EthItem model.\n It can be done only through a Proposal in the Linked DFO"
                },
                "functionSelector": "320d02e0",
                "id": 6481,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setNativeModel",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6479,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6478,
                      "mutability": "mutable",
                      "name": "nativeModelAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6481,
                      "src": "1821:26:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6477,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1821:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1820:28:20"
                },
                "returnParameters": {
                  "id": 6480,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1857:0:20"
                },
                "scope": 6536,
                "src": "1797:61:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6482,
                  "nodeType": "StructuredDocumentation",
                  "src": "1864:145:20",
                  "text": " @dev SET - The address of the ERC1155 NFT-Based EthItem model.\n It can be done only through a Proposal in the Linked DFO"
                },
                "functionSelector": "6d5a81c5",
                "id": 6487,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setERC1155WrapperModel",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6485,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6484,
                      "mutability": "mutable",
                      "name": "erc1155WrapperModelAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6487,
                      "src": "2046:34:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6483,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2046:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2045:36:20"
                },
                "returnParameters": {
                  "id": 6486,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2090:0:20"
                },
                "scope": 6536,
                "src": "2014:77:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6488,
                  "nodeType": "StructuredDocumentation",
                  "src": "2097:196:20",
                  "text": " @dev SET - The address of the Smart Contract whose code will serve as a model for all the Wrapped ERC20 EthItems.\n It can be done only through a Proposal in the Linked DFO"
                },
                "functionSelector": "d49dd013",
                "id": 6493,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setERC20WrapperModel",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6491,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6490,
                      "mutability": "mutable",
                      "name": "erc20WrapperModelAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6493,
                      "src": "2328:32:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6489,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2328:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2327:34:20"
                },
                "returnParameters": {
                  "id": 6492,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2370:0:20"
                },
                "scope": 6536,
                "src": "2298:73:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6494,
                  "nodeType": "StructuredDocumentation",
                  "src": "2377:197:20",
                  "text": " @dev SET - The address of the Smart Contract whose code will serve as a model for all the Wrapped ERC721 EthItems.\n It can be done only through a Proposal in the Linked DFO"
                },
                "functionSelector": "0633dfc8",
                "id": 6499,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setERC721WrapperModel",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6497,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6496,
                      "mutability": "mutable",
                      "name": "erc721WrapperModelAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6499,
                      "src": "2610:33:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6495,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2610:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2609:35:20"
                },
                "returnParameters": {
                  "id": 6498,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2653:0:20"
                },
                "scope": 6536,
                "src": "2579:75:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6500,
                  "nodeType": "StructuredDocumentation",
                  "src": "2660:144:20",
                  "text": " @dev SET - The element useful to calculate the Percentage fee\n It can be done only through a Proposal in the Linked DFO"
                },
                "functionSelector": "09cfc447",
                "id": 6507,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setMintFeePercentage",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6505,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6502,
                      "mutability": "mutable",
                      "name": "mintFeePercentageNumerator",
                      "nodeType": "VariableDeclaration",
                      "scope": 6507,
                      "src": "2839:34:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6501,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2839:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6504,
                      "mutability": "mutable",
                      "name": "mintFeePercentageDenominator",
                      "nodeType": "VariableDeclaration",
                      "scope": 6507,
                      "src": "2875:36:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6503,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2875:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2838:74:20"
                },
                "returnParameters": {
                  "id": 6506,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2921:0:20"
                },
                "scope": 6536,
                "src": "2809:113:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6508,
                  "nodeType": "StructuredDocumentation",
                  "src": "2928:144:20",
                  "text": " @dev SET - The element useful to calculate the Percentage fee\n It can be done only through a Proposal in the Linked DFO"
                },
                "functionSelector": "f26916ca",
                "id": 6515,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setBurnFeePercentage",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6513,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6510,
                      "mutability": "mutable",
                      "name": "burnFeePercentageNumerator",
                      "nodeType": "VariableDeclaration",
                      "scope": 6515,
                      "src": "3107:34:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6509,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3107:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6512,
                      "mutability": "mutable",
                      "name": "burnFeePercentageDenominator",
                      "nodeType": "VariableDeclaration",
                      "scope": 6515,
                      "src": "3143:36:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6511,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3143:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3106:74:20"
                },
                "returnParameters": {
                  "id": 6514,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3189:0:20"
                },
                "scope": 6536,
                "src": "3077:113:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "82cefdde",
                "id": 6526,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "createNative",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6520,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6517,
                      "mutability": "mutable",
                      "name": "modelInitPayload",
                      "nodeType": "VariableDeclaration",
                      "scope": 6526,
                      "src": "3218:31:20",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6516,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3218:5:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6519,
                      "mutability": "mutable",
                      "name": "ens",
                      "nodeType": "VariableDeclaration",
                      "scope": 6526,
                      "src": "3251:19:20",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6518,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3251:6:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3217:54:20"
                },
                "returnParameters": {
                  "id": 6525,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6522,
                      "mutability": "mutable",
                      "name": "newNativeAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6526,
                      "src": "3306:24:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6521,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3306:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6524,
                      "mutability": "mutable",
                      "name": "modelInitCallResponse",
                      "nodeType": "VariableDeclaration",
                      "scope": 6526,
                      "src": "3332:34:20",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6523,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3332:5:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3305:62:20"
                },
                "scope": 6536,
                "src": "3196:172:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "b320064e",
                "id": 6535,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "createERC20Wrapper",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6529,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6528,
                      "mutability": "mutable",
                      "name": "modelInitPayload",
                      "nodeType": "VariableDeclaration",
                      "scope": 6535,
                      "src": "3402:31:20",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6527,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3402:5:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3401:33:20"
                },
                "returnParameters": {
                  "id": 6534,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6531,
                      "mutability": "mutable",
                      "name": "newEthItemAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6535,
                      "src": "3469:25:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6530,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3469:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6533,
                      "mutability": "mutable",
                      "name": "modelInitCallResponse",
                      "nodeType": "VariableDeclaration",
                      "scope": 6535,
                      "src": "3496:34:20",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6532,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3496:5:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3468:63:20"
                },
                "scope": 6536,
                "src": "3374:158:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6541,
            "src": "124:3410:20"
          },
          {
            "absolutePath": "contracts/interfaces/IMVDFunctionalitiesManager.sol",
            "file": "./IMVDFunctionalitiesManager.sol",
            "id": 6537,
            "nodeType": "ImportDirective",
            "scope": 6541,
            "sourceUnit": 6813,
            "src": "3536:42:20",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMVDProxy.sol",
            "file": "./IMVDProxy.sol",
            "id": 6538,
            "nodeType": "ImportDirective",
            "scope": 6541,
            "sourceUnit": 7100,
            "src": "3579:25:20",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IDoubleProxy.sol",
            "file": "./IDoubleProxy.sol",
            "id": 6539,
            "nodeType": "ImportDirective",
            "scope": 6541,
            "sourceUnit": 5812,
            "src": "3605:28:20",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IStateHolder.sol",
            "file": "./IStateHolder.sol",
            "id": 6540,
            "nodeType": "ImportDirective",
            "scope": 6541,
            "sourceUnit": 8198,
            "src": "3634:28:20",
            "symbolAliases": [],
            "unitAlias": ""
          }
        ],
        "src": "32:3630:20"
      }
    },
    "contracts/interfaces/IEthItemOrchestratorDependantElement.sol": {
      "id": 21,
      "AST": {
        "absolutePath": "contracts/interfaces/IEthItemOrchestratorDependantElement.sol",
        "exportedSymbols": {
          "IERC165": [
            6027
          ],
          "IEthItemOrchestratorDependantElement": [
            6565
          ]
        },
        "id": 6566,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6542,
            "literals": [
              "solidity",
              "=",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "34:23:21"
          },
          {
            "absolutePath": "contracts/interfaces/IERC165.sol",
            "file": "./IERC165.sol",
            "id": 6543,
            "nodeType": "ImportDirective",
            "scope": 6566,
            "sourceUnit": 6028,
            "src": "61:23:21",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 6544,
                  "name": "IERC165",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 6027,
                  "src": "138:7:21"
                },
                "id": 6545,
                "nodeType": "InheritanceSpecifier",
                "src": "138:7:21"
              }
            ],
            "contractDependencies": [
              6027
            ],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 6565,
            "linearizedBaseContracts": [
              6565,
              6027
            ],
            "name": "IEthItemOrchestratorDependantElement",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "documentation": {
                  "id": 6546,
                  "nodeType": "StructuredDocumentation",
                  "src": "155:82:21",
                  "text": " @dev GET - The DoubleProxy of the DFO linked to this Contract"
                },
                "functionSelector": "4eb9b592",
                "id": 6551,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "doubleProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6547,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "263:2:21"
                },
                "returnParameters": {
                  "id": 6550,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6549,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6551,
                      "src": "289:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6548,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "289:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "288:9:21"
                },
                "scope": 6565,
                "src": "243:55:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 6552,
                  "nodeType": "StructuredDocumentation",
                  "src": "306:194:21",
                  "text": " @dev SET - The DoubleProxy of the DFO linked to this Contract\n It can be done only by the Factory controller\n @param newDoubleProxy the new DoubleProxy address"
                },
                "functionSelector": "cbd99d03",
                "id": 6557,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setDoubleProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6555,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6554,
                      "mutability": "mutable",
                      "name": "newDoubleProxy",
                      "nodeType": "VariableDeclaration",
                      "scope": 6557,
                      "src": "530:22:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6553,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "530:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "529:24:21"
                },
                "returnParameters": {
                  "id": 6556,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "562:0:21"
                },
                "scope": 6565,
                "src": "506:57:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "88de5c36",
                "id": 6564,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "isAuthorizedOrchestrator",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6560,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6559,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 6564,
                      "src": "605:16:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6558,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "605:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "604:18:21"
                },
                "returnParameters": {
                  "id": 6563,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6562,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6564,
                      "src": "645:4:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6561,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "645:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "644:6:21"
                },
                "scope": 6565,
                "src": "571:80:21",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6566,
            "src": "88:566:21"
          }
        ],
        "src": "34:620:21"
      }
    },
    "contracts/interfaces/IKnowledgeBase.sol": {
      "id": 22,
      "AST": {
        "absolutePath": "contracts/interfaces/IKnowledgeBase.sol",
        "exportedSymbols": {
          "IERC165": [
            6027
          ],
          "IEthItemOrchestratorDependantElement": [
            6565
          ],
          "IKnowledgeBase": [
            6617
          ]
        },
        "id": 6618,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6567,
            "literals": [
              "solidity",
              "=",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "31:23:22"
          },
          {
            "id": 6568,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "56:22:22"
          },
          {
            "absolutePath": "contracts/interfaces/IEthItemOrchestratorDependantElement.sol",
            "file": "./IEthItemOrchestratorDependantElement.sol",
            "id": 6569,
            "nodeType": "ImportDirective",
            "scope": 6618,
            "sourceUnit": 6566,
            "src": "80:52:22",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 6571,
                  "name": "IEthItemOrchestratorDependantElement",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 6565,
                  "src": "296:36:22"
                },
                "id": 6572,
                "nodeType": "InheritanceSpecifier",
                "src": "296:36:22"
              }
            ],
            "contractDependencies": [
              6027,
              6565
            ],
            "contractKind": "interface",
            "documentation": {
              "id": 6570,
              "nodeType": "StructuredDocumentation",
              "src": "134:133:22",
              "text": " @title IKnowledgeBase\n @dev This contract represents the Factory Used to deploy all the EthItems, keeping track of them."
            },
            "fullyImplemented": false,
            "id": 6617,
            "linearizedBaseContracts": [
              6617,
              6565,
              6027
            ],
            "name": "IKnowledgeBase",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "6f027d35",
                "id": 6577,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setERC20Wrapper",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6575,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6574,
                      "mutability": "mutable",
                      "name": "newWrapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 6577,
                      "src": "365:18:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6573,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "365:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "364:20:22"
                },
                "returnParameters": {
                  "id": 6576,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "393:0:22"
                },
                "scope": 6617,
                "src": "340:54:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "68c9ba27",
                "id": 6583,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "erc20Wrappers",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6578,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "422:2:22"
                },
                "returnParameters": {
                  "id": 6582,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6581,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6583,
                      "src": "447:16:22",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6579,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "447:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6580,
                        "nodeType": "ArrayTypeName",
                        "src": "447:9:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "446:18:22"
                },
                "scope": 6617,
                "src": "400:65:22",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "1b5f58c8",
                "id": 6588,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "erc20Wrapper",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6584,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "492:2:22"
                },
                "returnParameters": {
                  "id": 6587,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6586,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6588,
                      "src": "517:7:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6585,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "517:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "516:9:22"
                },
                "scope": 6617,
                "src": "471:55:22",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "02a6e8d1",
                "id": 6593,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setEthItem",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6591,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6590,
                      "mutability": "mutable",
                      "name": "ethItem",
                      "nodeType": "VariableDeclaration",
                      "scope": 6593,
                      "src": "552:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6589,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "552:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "551:17:22"
                },
                "returnParameters": {
                  "id": 6592,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "577:0:22"
                },
                "scope": 6617,
                "src": "532:46:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "47883c37",
                "id": 6600,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "isEthItem",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6596,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6595,
                      "mutability": "mutable",
                      "name": "ethItem",
                      "nodeType": "VariableDeclaration",
                      "scope": 6600,
                      "src": "603:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6594,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "603:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "602:17:22"
                },
                "returnParameters": {
                  "id": 6599,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6598,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6600,
                      "src": "642:4:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6597,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "642:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "641:6:22"
                },
                "scope": 6617,
                "src": "584:64:22",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "6f30048c",
                "id": 6607,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setWrapped",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6605,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6602,
                      "mutability": "mutable",
                      "name": "wrappedAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6607,
                      "src": "674:22:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6601,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "674:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6604,
                      "mutability": "mutable",
                      "name": "ethItem",
                      "nodeType": "VariableDeclaration",
                      "scope": 6607,
                      "src": "698:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6603,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "698:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "673:41:22"
                },
                "returnParameters": {
                  "id": 6606,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "723:0:22"
                },
                "scope": 6617,
                "src": "654:70:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "8002a60d",
                "id": 6616,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "wrapper",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6612,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6609,
                      "mutability": "mutable",
                      "name": "wrappedAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6616,
                      "src": "747:22:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6608,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "747:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6611,
                      "mutability": "mutable",
                      "name": "version",
                      "nodeType": "VariableDeclaration",
                      "scope": 6616,
                      "src": "771:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6610,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "771:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "746:41:22"
                },
                "returnParameters": {
                  "id": 6615,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6614,
                      "mutability": "mutable",
                      "name": "ethItem",
                      "nodeType": "VariableDeclaration",
                      "scope": 6616,
                      "src": "811:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6613,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "811:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "810:17:22"
                },
                "scope": 6617,
                "src": "730:98:22",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6618,
            "src": "268:562:22"
          }
        ],
        "src": "31:799:22"
      }
    },
    "contracts/interfaces/IMVDFunctionalitiesManager.sol": {
      "id": 23,
      "AST": {
        "absolutePath": "contracts/interfaces/IMVDFunctionalitiesManager.sol",
        "exportedSymbols": {
          "IMVDFunctionalitiesManager": [
            6812
          ]
        },
        "id": 6813,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6619,
            "literals": [
              "solidity",
              "=",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "34:23:23"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 6812,
            "linearizedBaseContracts": [
              6812
            ],
            "name": "IMVDFunctionalitiesManager",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "933a9ce8",
                "id": 6624,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6620,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "119:2:23"
                },
                "returnParameters": {
                  "id": 6623,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6622,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6624,
                      "src": "145:7:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6621,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "145:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "144:9:23"
                },
                "scope": 6812,
                "src": "102:52:23",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "3914a04f",
                "id": 6627,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6625,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "177:2:23"
                },
                "returnParameters": {
                  "id": 6626,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "188:0:23"
                },
                "scope": 6812,
                "src": "160:29:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "cbc2c3d9",
                "id": 6648,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "init",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6646,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6629,
                      "mutability": "mutable",
                      "name": "sourceLocation",
                      "nodeType": "VariableDeclaration",
                      "scope": 6648,
                      "src": "218:22:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6628,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "218:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6631,
                      "mutability": "mutable",
                      "name": "getMinimumBlockNumberSourceLocationId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6648,
                      "src": "250:45:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6630,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "250:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6633,
                      "mutability": "mutable",
                      "name": "getMinimumBlockNumberFunctionalityAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6648,
                      "src": "305:49:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6632,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "305:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6635,
                      "mutability": "mutable",
                      "name": "getEmergencyMinimumBlockNumberSourceLocationId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6648,
                      "src": "364:54:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6634,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "364:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6637,
                      "mutability": "mutable",
                      "name": "getEmergencyMinimumBlockNumberFunctionalityAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6648,
                      "src": "428:58:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6636,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "428:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6639,
                      "mutability": "mutable",
                      "name": "getEmergencySurveyStakingSourceLocationId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6648,
                      "src": "496:49:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6638,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "496:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6641,
                      "mutability": "mutable",
                      "name": "getEmergencySurveyStakingFunctionalityAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6648,
                      "src": "555:53:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6640,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "555:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6643,
                      "mutability": "mutable",
                      "name": "checkVoteResultSourceLocationId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6648,
                      "src": "618:39:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6642,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "618:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6645,
                      "mutability": "mutable",
                      "name": "checkVoteResultFunctionalityAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6648,
                      "src": "667:43:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6644,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "667:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "208:508:23"
                },
                "returnParameters": {
                  "id": 6647,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "725:0:23"
                },
                "scope": 6812,
                "src": "195:531:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "2ecc0412",
                "id": 6669,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "addFunctionality",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6667,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6650,
                      "mutability": "mutable",
                      "name": "codeName",
                      "nodeType": "VariableDeclaration",
                      "scope": 6669,
                      "src": "767:24:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6649,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "767:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6652,
                      "mutability": "mutable",
                      "name": "sourceLocation",
                      "nodeType": "VariableDeclaration",
                      "scope": 6669,
                      "src": "801:22:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6651,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "801:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6654,
                      "mutability": "mutable",
                      "name": "sourceLocationId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6669,
                      "src": "833:24:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6653,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "833:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6656,
                      "mutability": "mutable",
                      "name": "location",
                      "nodeType": "VariableDeclaration",
                      "scope": 6669,
                      "src": "867:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6655,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "867:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6658,
                      "mutability": "mutable",
                      "name": "submitable",
                      "nodeType": "VariableDeclaration",
                      "scope": 6669,
                      "src": "893:15:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6657,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "893:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6660,
                      "mutability": "mutable",
                      "name": "methodSignature",
                      "nodeType": "VariableDeclaration",
                      "scope": 6669,
                      "src": "918:31:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6659,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "918:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6662,
                      "mutability": "mutable",
                      "name": "returnAbiParametersArray",
                      "nodeType": "VariableDeclaration",
                      "scope": 6669,
                      "src": "959:40:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6661,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "959:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6664,
                      "mutability": "mutable",
                      "name": "isInternal",
                      "nodeType": "VariableDeclaration",
                      "scope": 6669,
                      "src": "1009:15:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6663,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1009:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6666,
                      "mutability": "mutable",
                      "name": "needsSender",
                      "nodeType": "VariableDeclaration",
                      "scope": 6669,
                      "src": "1034:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6665,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1034:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "757:299:23"
                },
                "returnParameters": {
                  "id": 6668,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1065:0:23"
                },
                "scope": 6812,
                "src": "732:334:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "25ad58e3",
                "id": 6692,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "addFunctionality",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6690,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6671,
                      "mutability": "mutable",
                      "name": "codeName",
                      "nodeType": "VariableDeclaration",
                      "scope": 6692,
                      "src": "1107:24:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6670,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1107:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6673,
                      "mutability": "mutable",
                      "name": "sourceLocation",
                      "nodeType": "VariableDeclaration",
                      "scope": 6692,
                      "src": "1141:22:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6672,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1141:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6675,
                      "mutability": "mutable",
                      "name": "sourceLocationId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6692,
                      "src": "1173:24:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6674,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1173:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6677,
                      "mutability": "mutable",
                      "name": "location",
                      "nodeType": "VariableDeclaration",
                      "scope": 6692,
                      "src": "1207:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6676,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1207:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6679,
                      "mutability": "mutable",
                      "name": "submitable",
                      "nodeType": "VariableDeclaration",
                      "scope": 6692,
                      "src": "1233:15:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6678,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1233:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6681,
                      "mutability": "mutable",
                      "name": "methodSignature",
                      "nodeType": "VariableDeclaration",
                      "scope": 6692,
                      "src": "1258:31:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6680,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1258:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6683,
                      "mutability": "mutable",
                      "name": "returnAbiParametersArray",
                      "nodeType": "VariableDeclaration",
                      "scope": 6692,
                      "src": "1299:40:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6682,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1299:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6685,
                      "mutability": "mutable",
                      "name": "isInternal",
                      "nodeType": "VariableDeclaration",
                      "scope": 6692,
                      "src": "1349:15:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6684,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1349:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6687,
                      "mutability": "mutable",
                      "name": "needsSender",
                      "nodeType": "VariableDeclaration",
                      "scope": 6692,
                      "src": "1374:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6686,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1374:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6689,
                      "mutability": "mutable",
                      "name": "position",
                      "nodeType": "VariableDeclaration",
                      "scope": 6692,
                      "src": "1400:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6688,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1400:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1097:325:23"
                },
                "returnParameters": {
                  "id": 6691,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1431:0:23"
                },
                "scope": 6812,
                "src": "1072:360:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "7b858bbb",
                "id": 6701,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeFunctionality",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6695,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6694,
                      "mutability": "mutable",
                      "name": "codeName",
                      "nodeType": "VariableDeclaration",
                      "scope": 6701,
                      "src": "1467:24:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6693,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1467:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1466:26:23"
                },
                "returnParameters": {
                  "id": 6700,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6697,
                      "mutability": "mutable",
                      "name": "removed",
                      "nodeType": "VariableDeclaration",
                      "scope": 6701,
                      "src": "1511:12:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6696,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1511:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6699,
                      "mutability": "mutable",
                      "name": "position",
                      "nodeType": "VariableDeclaration",
                      "scope": 6701,
                      "src": "1525:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6698,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1525:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1510:32:23"
                },
                "scope": 6812,
                "src": "1438:105:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "699b6a4e",
                "id": 6708,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "isValidFunctionality",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6704,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6703,
                      "mutability": "mutable",
                      "name": "functionality",
                      "nodeType": "VariableDeclaration",
                      "scope": 6708,
                      "src": "1579:21:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6702,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1579:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1578:23:23"
                },
                "returnParameters": {
                  "id": 6707,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6706,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6708,
                      "src": "1625:4:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6705,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1625:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1624:6:23"
                },
                "scope": 6812,
                "src": "1549:82:23",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "3191d332",
                "id": 6715,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "isAuthorizedFunctionality",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6711,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6710,
                      "mutability": "mutable",
                      "name": "functionality",
                      "nodeType": "VariableDeclaration",
                      "scope": 6715,
                      "src": "1672:21:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6709,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1672:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1671:23:23"
                },
                "returnParameters": {
                  "id": 6714,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6713,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6715,
                      "src": "1718:4:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6712,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1718:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1717:6:23"
                },
                "scope": 6812,
                "src": "1637:87:23",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "74f81676",
                "id": 6722,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setCallingContext",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6718,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6717,
                      "mutability": "mutable",
                      "name": "location",
                      "nodeType": "VariableDeclaration",
                      "scope": 6722,
                      "src": "1757:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6716,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1757:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1756:18:23"
                },
                "returnParameters": {
                  "id": 6721,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6720,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6722,
                      "src": "1793:4:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6719,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1793:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1792:6:23"
                },
                "scope": 6812,
                "src": "1730:69:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "d7e5d1af",
                "id": 6725,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "clearCallingContext",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6723,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1833:2:23"
                },
                "returnParameters": {
                  "id": 6724,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1844:0:23"
                },
                "scope": 6812,
                "src": "1805:40:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "c84eec1e",
                "id": 6740,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getFunctionalityData",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6728,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6727,
                      "mutability": "mutable",
                      "name": "codeName",
                      "nodeType": "VariableDeclaration",
                      "scope": 6740,
                      "src": "1881:24:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6726,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1881:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1880:26:23"
                },
                "returnParameters": {
                  "id": 6739,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6730,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6740,
                      "src": "1967:7:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6729,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1967:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6732,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6740,
                      "src": "1988:7:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6731,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1988:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6734,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6740,
                      "src": "2009:13:23",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6733,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2009:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6736,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6740,
                      "src": "2036:7:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6735,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2036:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6738,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6740,
                      "src": "2057:7:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6737,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2057:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1953:121:23"
                },
                "scope": 6812,
                "src": "1851:224:23",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "3c980804",
                "id": 6747,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "hasFunctionality",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6743,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6742,
                      "mutability": "mutable",
                      "name": "codeName",
                      "nodeType": "VariableDeclaration",
                      "scope": 6747,
                      "src": "2107:24:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6741,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2107:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2106:26:23"
                },
                "returnParameters": {
                  "id": 6746,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6745,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6747,
                      "src": "2156:4:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6744,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2156:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2155:6:23"
                },
                "scope": 6812,
                "src": "2081:81:23",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "ceee604e",
                "id": 6752,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getFunctionalitiesAmount",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6748,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2201:2:23"
                },
                "returnParameters": {
                  "id": 6751,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6750,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6752,
                      "src": "2227:7:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6749,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2227:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2226:9:23"
                },
                "scope": 6812,
                "src": "2168:68:23",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "618e9ce4",
                "id": 6757,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "functionalitiesToJSON",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6753,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2272:2:23"
                },
                "returnParameters": {
                  "id": 6756,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6755,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6757,
                      "src": "2298:13:23",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6754,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2298:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2297:15:23"
                },
                "scope": 6812,
                "src": "2242:71:23",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "c4fe90d3",
                "id": 6766,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "functionalitiesToJSON",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6762,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6759,
                      "mutability": "mutable",
                      "name": "start",
                      "nodeType": "VariableDeclaration",
                      "scope": 6766,
                      "src": "2350:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6758,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2350:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6761,
                      "mutability": "mutable",
                      "name": "l",
                      "nodeType": "VariableDeclaration",
                      "scope": 6766,
                      "src": "2365:9:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6760,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2365:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2349:26:23"
                },
                "returnParameters": {
                  "id": 6765,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6764,
                      "mutability": "mutable",
                      "name": "functionsJSONArray",
                      "nodeType": "VariableDeclaration",
                      "scope": 6766,
                      "src": "2399:32:23",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6763,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2399:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2398:34:23"
                },
                "scope": 6812,
                "src": "2319:114:23",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "34c7354d",
                "id": 6771,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "functionalityNames",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6767,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2466:2:23"
                },
                "returnParameters": {
                  "id": 6770,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6769,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6771,
                      "src": "2492:13:23",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6768,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2492:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2491:15:23"
                },
                "scope": 6812,
                "src": "2439:68:23",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "e0f126b8",
                "id": 6780,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "functionalityNames",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6776,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6773,
                      "mutability": "mutable",
                      "name": "start",
                      "nodeType": "VariableDeclaration",
                      "scope": 6780,
                      "src": "2541:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6772,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2541:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6775,
                      "mutability": "mutable",
                      "name": "l",
                      "nodeType": "VariableDeclaration",
                      "scope": 6780,
                      "src": "2556:9:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6774,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2556:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2540:26:23"
                },
                "returnParameters": {
                  "id": 6779,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6778,
                      "mutability": "mutable",
                      "name": "functionsJSONArray",
                      "nodeType": "VariableDeclaration",
                      "scope": 6780,
                      "src": "2590:32:23",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6777,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2590:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2589:34:23"
                },
                "scope": 6812,
                "src": "2513:111:23",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "a50f4d48",
                "id": 6787,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "functionalityToJSON",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6783,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6782,
                      "mutability": "mutable",
                      "name": "codeName",
                      "nodeType": "VariableDeclaration",
                      "scope": 6787,
                      "src": "2659:24:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6781,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2659:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2658:26:23"
                },
                "returnParameters": {
                  "id": 6786,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6785,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6787,
                      "src": "2708:13:23",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6784,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2708:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2707:15:23"
                },
                "scope": 6812,
                "src": "2630:93:23",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "c1423cb0",
                "id": 6804,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "preConditionCheck",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6798,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6789,
                      "mutability": "mutable",
                      "name": "codeName",
                      "nodeType": "VariableDeclaration",
                      "scope": 6804,
                      "src": "2765:24:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6788,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2765:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6791,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 6804,
                      "src": "2799:19:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6790,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2799:5:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6793,
                      "mutability": "mutable",
                      "name": "submitable",
                      "nodeType": "VariableDeclaration",
                      "scope": 6804,
                      "src": "2828:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6792,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2828:5:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6795,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "scope": 6804,
                      "src": "2854:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6794,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2854:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6797,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 6804,
                      "src": "2878:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6796,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2878:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2755:142:23"
                },
                "returnParameters": {
                  "id": 6803,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6800,
                      "mutability": "mutable",
                      "name": "location",
                      "nodeType": "VariableDeclaration",
                      "scope": 6804,
                      "src": "2921:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6799,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2921:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6802,
                      "mutability": "mutable",
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 6804,
                      "src": "2939:20:23",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6801,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2939:5:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2920:40:23"
                },
                "scope": 6812,
                "src": "2729:232:23",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "fd5d2d1b",
                "id": 6811,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setupFunctionality",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6807,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6806,
                      "mutability": "mutable",
                      "name": "proposalAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6811,
                      "src": "2995:23:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6805,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2995:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2994:25:23"
                },
                "returnParameters": {
                  "id": 6810,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6809,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6811,
                      "src": "3038:4:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6808,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3038:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3037:6:23"
                },
                "scope": 6812,
                "src": "2967:77:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6813,
            "src": "59:2987:23"
          }
        ],
        "src": "34:3013:23"
      }
    },
    "contracts/interfaces/IMVDProxy.sol": {
      "id": 24,
      "AST": {
        "absolutePath": "contracts/interfaces/IMVDProxy.sol",
        "exportedSymbols": {
          "IMVDProxy": [
            7099
          ]
        },
        "id": 7100,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6814,
            "literals": [
              "solidity",
              "=",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "34:23:24"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 7099,
            "linearizedBaseContracts": [
              7099
            ],
            "name": "IMVDProxy",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "f0d4d592",
                "id": 6831,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "init",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6829,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6816,
                      "mutability": "mutable",
                      "name": "votingTokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6831,
                      "src": "108:26:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6815,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "108:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6818,
                      "mutability": "mutable",
                      "name": "functionalityProposalManagerAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6831,
                      "src": "144:43:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6817,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "144:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6820,
                      "mutability": "mutable",
                      "name": "stateHolderAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6831,
                      "src": "197:26:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6819,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "197:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6822,
                      "mutability": "mutable",
                      "name": "functionalityModelsManagerAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6831,
                      "src": "233:41:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6821,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "233:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6824,
                      "mutability": "mutable",
                      "name": "functionalitiesManagerAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6831,
                      "src": "284:37:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6823,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "284:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6826,
                      "mutability": "mutable",
                      "name": "walletAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6831,
                      "src": "331:21:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6825,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "331:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6828,
                      "mutability": "mutable",
                      "name": "doubleProxyAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6831,
                      "src": "362:26:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6827,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "362:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "98:296:24"
                },
                "returnParameters": {
                  "id": 6830,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "403:0:24"
                },
                "scope": 7099,
                "src": "85:319:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "c838ccb6",
                "id": 6837,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getDelegates",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6832,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "431:2:24"
                },
                "returnParameters": {
                  "id": 6836,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6835,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6837,
                      "src": "457:16:24",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6833,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "457:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6834,
                        "nodeType": "ArrayTypeName",
                        "src": "457:9:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "456:18:24"
                },
                "scope": 7099,
                "src": "410:65:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "21df0da7",
                "id": 6842,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getToken",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6838,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "498:2:24"
                },
                "returnParameters": {
                  "id": 6841,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6840,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6842,
                      "src": "524:7:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6839,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "524:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "523:9:24"
                },
                "scope": 7099,
                "src": "481:52:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "c5c2fb6b",
                "id": 6847,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getMVDFunctionalityProposalManagerAddress",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6843,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "589:2:24"
                },
                "returnParameters": {
                  "id": 6846,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6845,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6847,
                      "src": "615:7:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6844,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "615:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "614:9:24"
                },
                "scope": 7099,
                "src": "539:85:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "ba83c16f",
                "id": 6852,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getStateHolderAddress",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6848,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "660:2:24"
                },
                "returnParameters": {
                  "id": 6851,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6850,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6852,
                      "src": "686:7:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6849,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "686:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "685:9:24"
                },
                "scope": 7099,
                "src": "630:65:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "8e98ab52",
                "id": 6857,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getMVDFunctionalityModelsManagerAddress",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6853,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "749:2:24"
                },
                "returnParameters": {
                  "id": 6856,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6855,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6857,
                      "src": "775:7:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6854,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "775:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "774:9:24"
                },
                "scope": 7099,
                "src": "701:83:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "6701586a",
                "id": 6862,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getMVDFunctionalitiesManagerAddress",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6858,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "834:2:24"
                },
                "returnParameters": {
                  "id": 6861,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6860,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6862,
                      "src": "860:7:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6859,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "860:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "859:9:24"
                },
                "scope": 7099,
                "src": "790:79:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "31c6903d",
                "id": 6867,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getMVDWalletAddress",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6863,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "903:2:24"
                },
                "returnParameters": {
                  "id": 6866,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6865,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6867,
                      "src": "929:7:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6864,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "929:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "928:9:24"
                },
                "scope": 7099,
                "src": "875:63:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "a58ea743",
                "id": 6872,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getDoubleProxyAddress",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6868,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "974:2:24"
                },
                "returnParameters": {
                  "id": 6871,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6870,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6872,
                      "src": "1000:7:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6869,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1000:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "999:9:24"
                },
                "scope": 7099,
                "src": "944:65:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "94dcf2e6",
                "id": 6881,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setDelegate",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6877,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6874,
                      "mutability": "mutable",
                      "name": "position",
                      "nodeType": "VariableDeclaration",
                      "scope": 6881,
                      "src": "1036:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6873,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1036:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6876,
                      "mutability": "mutable",
                      "name": "newAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6881,
                      "src": "1054:18:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6875,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1054:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1035:38:24"
                },
                "returnParameters": {
                  "id": 6880,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6879,
                      "mutability": "mutable",
                      "name": "oldAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6881,
                      "src": "1092:18:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6878,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1092:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1091:20:24"
                },
                "scope": 7099,
                "src": "1015:97:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "8a862039",
                "id": 6888,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "changeProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6886,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6883,
                      "mutability": "mutable",
                      "name": "newAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6888,
                      "src": "1139:18:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6882,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1139:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6885,
                      "mutability": "mutable",
                      "name": "initPayload",
                      "nodeType": "VariableDeclaration",
                      "scope": 6888,
                      "src": "1159:26:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6884,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1159:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1138:48:24"
                },
                "returnParameters": {
                  "id": 6887,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1195:0:24"
                },
                "scope": 7099,
                "src": "1118:78:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "a9771afd",
                "id": 6895,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "isValidProposal",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6891,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6890,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 6895,
                      "src": "1227:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6889,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1227:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1226:18:24"
                },
                "returnParameters": {
                  "id": 6894,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6893,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6895,
                      "src": "1268:4:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6892,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1268:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1267:6:24"
                },
                "scope": 7099,
                "src": "1202:72:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "3191d332",
                "id": 6902,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "isAuthorizedFunctionality",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6898,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6897,
                      "mutability": "mutable",
                      "name": "functionality",
                      "nodeType": "VariableDeclaration",
                      "scope": 6902,
                      "src": "1315:21:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6896,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1315:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1314:23:24"
                },
                "returnParameters": {
                  "id": 6901,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6900,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 6902,
                      "src": "1361:4:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6899,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1361:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1360:6:24"
                },
                "scope": 7099,
                "src": "1280:87:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "4e0a53ec",
                "id": 6929,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "newProposal",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6925,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6904,
                      "mutability": "mutable",
                      "name": "codeName",
                      "nodeType": "VariableDeclaration",
                      "scope": 6929,
                      "src": "1403:24:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6903,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1403:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6906,
                      "mutability": "mutable",
                      "name": "emergency",
                      "nodeType": "VariableDeclaration",
                      "scope": 6929,
                      "src": "1437:14:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6905,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1437:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6908,
                      "mutability": "mutable",
                      "name": "sourceLocation",
                      "nodeType": "VariableDeclaration",
                      "scope": 6929,
                      "src": "1461:22:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6907,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1461:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6910,
                      "mutability": "mutable",
                      "name": "sourceLocationId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6929,
                      "src": "1493:24:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6909,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1493:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6912,
                      "mutability": "mutable",
                      "name": "location",
                      "nodeType": "VariableDeclaration",
                      "scope": 6929,
                      "src": "1527:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6911,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1527:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6914,
                      "mutability": "mutable",
                      "name": "submitable",
                      "nodeType": "VariableDeclaration",
                      "scope": 6929,
                      "src": "1553:15:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6913,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1553:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6916,
                      "mutability": "mutable",
                      "name": "methodSignature",
                      "nodeType": "VariableDeclaration",
                      "scope": 6929,
                      "src": "1578:31:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6915,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1578:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6918,
                      "mutability": "mutable",
                      "name": "returnParametersJSONArray",
                      "nodeType": "VariableDeclaration",
                      "scope": 6929,
                      "src": "1619:41:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6917,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1619:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6920,
                      "mutability": "mutable",
                      "name": "isInternal",
                      "nodeType": "VariableDeclaration",
                      "scope": 6929,
                      "src": "1670:15:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6919,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1670:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6922,
                      "mutability": "mutable",
                      "name": "needsSender",
                      "nodeType": "VariableDeclaration",
                      "scope": 6929,
                      "src": "1695:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6921,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1695:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6924,
                      "mutability": "mutable",
                      "name": "replaces",
                      "nodeType": "VariableDeclaration",
                      "scope": 6929,
                      "src": "1721:24:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6923,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1721:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1393:358:24"
                },
                "returnParameters": {
                  "id": 6928,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6927,
                      "mutability": "mutable",
                      "name": "proposalAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6929,
                      "src": "1770:23:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6926,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1770:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1769:25:24"
                },
                "scope": 7099,
                "src": "1373:422:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "161f2a1e",
                "id": 6934,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "startProposal",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6932,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6931,
                      "mutability": "mutable",
                      "name": "proposalAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6934,
                      "src": "1824:23:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6930,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1824:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1823:25:24"
                },
                "returnParameters": {
                  "id": 6933,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1857:0:24"
                },
                "scope": 7099,
                "src": "1801:57:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "4d4e352d",
                "id": 6939,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "disableProposal",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6937,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6936,
                      "mutability": "mutable",
                      "name": "proposalAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6939,
                      "src": "1889:23:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6935,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1889:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1888:25:24"
                },
                "returnParameters": {
                  "id": 6938,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1922:0:24"
                },
                "scope": 7099,
                "src": "1864:59:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "dbba0f01",
                "id": 6948,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6946,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6941,
                      "mutability": "mutable",
                      "name": "receiver",
                      "nodeType": "VariableDeclaration",
                      "scope": 6948,
                      "src": "1956:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6940,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1956:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6943,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 6948,
                      "src": "1982:13:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6942,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1982:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6945,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 6948,
                      "src": "2005:13:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6944,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2005:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1946:78:24"
                },
                "returnParameters": {
                  "id": 6947,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2033:0:24"
                },
                "scope": 7099,
                "src": "1929:105:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "37aa4d79",
                "id": 6961,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer721",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6959,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6950,
                      "mutability": "mutable",
                      "name": "receiver",
                      "nodeType": "VariableDeclaration",
                      "scope": 6961,
                      "src": "2070:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6949,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2070:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6952,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6961,
                      "src": "2096:15:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6951,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2096:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6954,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 6961,
                      "src": "2121:19:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6953,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2121:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6956,
                      "mutability": "mutable",
                      "name": "safe",
                      "nodeType": "VariableDeclaration",
                      "scope": 6961,
                      "src": "2150:9:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6955,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2150:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6958,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 6961,
                      "src": "2169:13:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6957,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2169:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2060:128:24"
                },
                "returnParameters": {
                  "id": 6960,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2197:0:24"
                },
                "scope": 7099,
                "src": "2040:158:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "f5f62a69",
                "id": 6970,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "flushToWallet",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6968,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6963,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 6970,
                      "src": "2236:20:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6962,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2236:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6965,
                      "mutability": "mutable",
                      "name": "is721",
                      "nodeType": "VariableDeclaration",
                      "scope": 6970,
                      "src": "2266:10:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6964,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2266:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6967,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "nodeType": "VariableDeclaration",
                      "scope": 6970,
                      "src": "2286:15:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6966,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2286:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2226:81:24"
                },
                "returnParameters": {
                  "id": 6969,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2316:0:24"
                },
                "scope": 7099,
                "src": "2204:113:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "2a7434a8",
                "id": 6973,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setProposal",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6971,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2343:2:24"
                },
                "returnParameters": {
                  "id": 6972,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2354:0:24"
                },
                "scope": 7099,
                "src": "2323:32:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "841d0ed7",
                "id": 6982,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "read",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6978,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6975,
                      "mutability": "mutable",
                      "name": "codeName",
                      "nodeType": "VariableDeclaration",
                      "scope": 6982,
                      "src": "2375:24:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6974,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2375:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6977,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 6982,
                      "src": "2401:19:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6976,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2401:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2374:47:24"
                },
                "returnParameters": {
                  "id": 6981,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6980,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 6982,
                      "src": "2445:23:24",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6979,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2445:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2444:25:24"
                },
                "scope": 7099,
                "src": "2361:109:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "9e813f1f",
                "id": 6991,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "submit",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6987,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6984,
                      "mutability": "mutable",
                      "name": "codeName",
                      "nodeType": "VariableDeclaration",
                      "scope": 6991,
                      "src": "2492:24:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6983,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2492:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6986,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 6991,
                      "src": "2518:19:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6985,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2518:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2491:47:24"
                },
                "returnParameters": {
                  "id": 6990,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6989,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 6991,
                      "src": "2565:23:24",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6988,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2565:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2564:25:24"
                },
                "scope": 7099,
                "src": "2476:114:24",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "1a7e9d78",
                "id": 7002,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "callFromManager",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 6996,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6993,
                      "mutability": "mutable",
                      "name": "location",
                      "nodeType": "VariableDeclaration",
                      "scope": 7002,
                      "src": "2621:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6992,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2621:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6995,
                      "mutability": "mutable",
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 7002,
                      "src": "2639:22:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6994,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2639:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2620:42:24"
                },
                "returnParameters": {
                  "id": 7001,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6998,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7002,
                      "src": "2681:4:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6997,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2681:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7000,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7002,
                      "src": "2687:12:24",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6999,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2687:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2680:20:24"
                },
                "scope": 7099,
                "src": "2596:105:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "37f2a380",
                "id": 7027,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "emitFromManager",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7025,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7004,
                      "mutability": "mutable",
                      "name": "codeName",
                      "nodeType": "VariableDeclaration",
                      "scope": 7027,
                      "src": "2741:24:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7003,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2741:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7006,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 7027,
                      "src": "2775:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7005,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2775:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7008,
                      "mutability": "mutable",
                      "name": "replaced",
                      "nodeType": "VariableDeclaration",
                      "scope": 7027,
                      "src": "2801:24:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7007,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2801:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7010,
                      "mutability": "mutable",
                      "name": "replacedSourceLocation",
                      "nodeType": "VariableDeclaration",
                      "scope": 7027,
                      "src": "2835:30:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7009,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2835:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7012,
                      "mutability": "mutable",
                      "name": "replacedSourceLocationId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7027,
                      "src": "2875:32:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7011,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2875:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7014,
                      "mutability": "mutable",
                      "name": "location",
                      "nodeType": "VariableDeclaration",
                      "scope": 7027,
                      "src": "2917:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7013,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2917:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7016,
                      "mutability": "mutable",
                      "name": "submitable",
                      "nodeType": "VariableDeclaration",
                      "scope": 7027,
                      "src": "2943:15:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7015,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2943:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7018,
                      "mutability": "mutable",
                      "name": "methodSignature",
                      "nodeType": "VariableDeclaration",
                      "scope": 7027,
                      "src": "2968:31:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7017,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2968:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7020,
                      "mutability": "mutable",
                      "name": "isInternal",
                      "nodeType": "VariableDeclaration",
                      "scope": 7027,
                      "src": "3009:15:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7019,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3009:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7022,
                      "mutability": "mutable",
                      "name": "needsSender",
                      "nodeType": "VariableDeclaration",
                      "scope": 7027,
                      "src": "3034:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7021,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3034:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7024,
                      "mutability": "mutable",
                      "name": "proposalAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 7027,
                      "src": "3060:23:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7023,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3060:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2731:358:24"
                },
                "returnParameters": {
                  "id": 7026,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3098:0:24"
                },
                "scope": 7099,
                "src": "2707:392:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "0c259388",
                "id": 7038,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "emitEvent",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7036,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7029,
                      "mutability": "mutable",
                      "name": "eventSignature",
                      "nodeType": "VariableDeclaration",
                      "scope": 7038,
                      "src": "3133:30:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7028,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3133:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7031,
                      "mutability": "mutable",
                      "name": "firstIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 7038,
                      "src": "3173:25:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7030,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3173:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7033,
                      "mutability": "mutable",
                      "name": "secondIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 7038,
                      "src": "3208:26:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7032,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3208:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7035,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 7038,
                      "src": "3244:19:24",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7034,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3244:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3123:146:24"
                },
                "returnParameters": {
                  "id": 7037,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3278:0:24"
                },
                "scope": 7099,
                "src": "3105:174:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "anonymous": false,
                "id": 7042,
                "name": "ProxyChanged",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7041,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7040,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "newAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 7042,
                      "src": "3304:26:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7039,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3304:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3303:28:24"
                },
                "src": "3285:47:24"
              },
              {
                "anonymous": false,
                "id": 7050,
                "name": "DelegateChanged",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7049,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7044,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "position",
                      "nodeType": "VariableDeclaration",
                      "scope": 7050,
                      "src": "3359:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7043,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3359:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7046,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "oldAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 7050,
                      "src": "3377:26:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7045,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3377:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7048,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "newAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 7050,
                      "src": "3405:26:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7047,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3405:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3358:74:24"
                },
                "src": "3337:96:24"
              },
              {
                "anonymous": false,
                "id": 7054,
                "name": "Proposal",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7053,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7052,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 7054,
                      "src": "3454:16:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7051,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3454:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3453:18:24"
                },
                "src": "3439:33:24"
              },
              {
                "anonymous": false,
                "id": 7058,
                "name": "ProposalCheck",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7057,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7056,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 7058,
                      "src": "3497:24:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7055,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3497:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3496:26:24"
                },
                "src": "3477:46:24"
              },
              {
                "anonymous": false,
                "id": 7064,
                "name": "ProposalSet",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7063,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7060,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 7064,
                      "src": "3546:24:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7059,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3546:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7062,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 7064,
                      "src": "3572:12:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7061,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3572:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3545:40:24"
                },
                "src": "3528:58:24"
              },
              {
                "anonymous": false,
                "id": 7088,
                "name": "FunctionalitySet",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7087,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7066,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "codeName",
                      "nodeType": "VariableDeclaration",
                      "scope": 7088,
                      "src": "3623:15:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7065,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3623:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7068,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 7088,
                      "src": "3648:24:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7067,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3648:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7070,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "replaced",
                      "nodeType": "VariableDeclaration",
                      "scope": 7088,
                      "src": "3682:15:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7069,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3682:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7072,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "replacedSourceLocation",
                      "nodeType": "VariableDeclaration",
                      "scope": 7088,
                      "src": "3707:30:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7071,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3707:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7074,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "replacedSourceLocationId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7088,
                      "src": "3747:32:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7073,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3747:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7076,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "replacedLocation",
                      "nodeType": "VariableDeclaration",
                      "scope": 7088,
                      "src": "3789:32:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7075,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3789:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7078,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "replacedWasSubmitable",
                      "nodeType": "VariableDeclaration",
                      "scope": 7088,
                      "src": "3831:26:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7077,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3831:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7080,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "replacedMethodSignature",
                      "nodeType": "VariableDeclaration",
                      "scope": 7088,
                      "src": "3867:30:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7079,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3867:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7082,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "replacedWasInternal",
                      "nodeType": "VariableDeclaration",
                      "scope": 7088,
                      "src": "3907:24:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7081,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3907:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7084,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "replacedNeededSender",
                      "nodeType": "VariableDeclaration",
                      "scope": 7088,
                      "src": "3941:25:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7083,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3941:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7086,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "replacedProposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 7088,
                      "src": "3976:32:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7085,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3976:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3613:401:24"
                },
                "src": "3591:424:24"
              },
              {
                "anonymous": false,
                "id": 7098,
                "name": "Event",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7097,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7090,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 7098,
                      "src": "4033:18:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7089,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "4033:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7092,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "firstIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 7098,
                      "src": "4053:26:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7091,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4053:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7094,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "secondIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 7098,
                      "src": "4081:27:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7093,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4081:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7096,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 7098,
                      "src": "4110:10:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7095,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4110:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4032:89:24"
                },
                "src": "4021:101:24"
              }
            ],
            "scope": 7100,
            "src": "59:4065:24"
          }
        ],
        "src": "34:4091:24"
      }
    },
    "contracts/interfaces/IMateriaFactory.sol": {
      "id": 25,
      "AST": {
        "absolutePath": "contracts/interfaces/IMateriaFactory.sol",
        "exportedSymbols": {
          "IMateriaFactory": [
            7180
          ]
        },
        "id": 7181,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 7180,
            "linearizedBaseContracts": [
              7180
            ],
            "name": "IMateriaFactory",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "id": 7110,
                "name": "PairCreated",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7109,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7102,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "scope": 7110,
                      "src": "84:22:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7101,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "84:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7104,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "scope": 7110,
                      "src": "108:22:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7103,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "108:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7106,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "scope": 7110,
                      "src": "132:12:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7105,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "132:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7108,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7110,
                      "src": "146:7:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7107,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "146:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "83:71:25"
                },
                "src": "66:89:25"
              },
              {
                "functionSelector": "017e7e58",
                "id": 7115,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "feeTo",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7111,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "175:2:25"
                },
                "returnParameters": {
                  "id": 7114,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7113,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7115,
                      "src": "201:7:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7112,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "201:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "200:9:25"
                },
                "scope": 7180,
                "src": "161:49:25",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "e6a43905",
                "id": 7124,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getPair",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7120,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7117,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 7124,
                      "src": "233:14:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7116,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "233:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7119,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 7124,
                      "src": "249:14:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7118,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "249:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "232:32:25"
                },
                "returnParameters": {
                  "id": 7123,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7122,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "scope": 7124,
                      "src": "288:12:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7121,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "288:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "287:14:25"
                },
                "scope": 7180,
                "src": "216:86:25",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "1e3dd18b",
                "id": 7131,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allPairs",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7127,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7126,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7131,
                      "src": "326:7:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7125,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "326:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "325:9:25"
                },
                "returnParameters": {
                  "id": 7130,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7129,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "scope": 7131,
                      "src": "358:12:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7128,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "358:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "357:14:25"
                },
                "scope": 7180,
                "src": "308:64:25",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "574f2ba3",
                "id": 7136,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allPairsLength",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7132,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "401:2:25"
                },
                "returnParameters": {
                  "id": 7135,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7134,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7136,
                      "src": "427:7:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7133,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "427:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "426:9:25"
                },
                "scope": 7180,
                "src": "378:58:25",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "c9c65396",
                "id": 7145,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "createPair",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7141,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7138,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 7145,
                      "src": "462:14:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7137,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "462:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7140,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 7145,
                      "src": "478:14:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7139,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "478:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "461:32:25"
                },
                "returnParameters": {
                  "id": 7144,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7143,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "scope": 7145,
                      "src": "512:12:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7142,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "512:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "511:14:25"
                },
                "scope": 7180,
                "src": "442:84:25",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "f46901ed",
                "id": 7150,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeTo",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7148,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7147,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7150,
                      "src": "550:7:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7146,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "550:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "549:9:25"
                },
                "returnParameters": {
                  "id": 7149,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "567:0:25"
                },
                "scope": 7180,
                "src": "532:36:25",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "794366e6",
                "id": 7155,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setDefaultMateriaFee",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7153,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7152,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7155,
                      "src": "604:7:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7151,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "604:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "603:9:25"
                },
                "returnParameters": {
                  "id": 7154,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "621:0:25"
                },
                "scope": 7180,
                "src": "574:48:25",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "334dc4f3",
                "id": 7160,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setDefaultSwapFee",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7158,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7157,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7160,
                      "src": "655:7:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7156,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "655:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "654:9:25"
                },
                "returnParameters": {
                  "id": 7159,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "672:0:25"
                },
                "scope": 7180,
                "src": "628:45:25",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "f2fde38b",
                "id": 7165,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferOwnership",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7163,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7162,
                      "mutability": "mutable",
                      "name": "newOwner",
                      "nodeType": "VariableDeclaration",
                      "scope": 7165,
                      "src": "706:16:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7161,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "706:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "705:18:25"
                },
                "returnParameters": {
                  "id": 7164,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "732:0:25"
                },
                "scope": 7180,
                "src": "679:54:25",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "11f38472",
                "id": 7174,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFees",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7172,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7167,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7174,
                      "src": "765:7:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7166,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "765:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7169,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7174,
                      "src": "782:7:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7168,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "782:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7171,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7174,
                      "src": "799:7:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7170,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "799:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "755:57:25"
                },
                "returnParameters": {
                  "id": 7173,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "821:0:25"
                },
                "scope": 7180,
                "src": "739:83:25",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "8da5cb5b",
                "id": 7179,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "owner",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7175,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "842:2:25"
                },
                "returnParameters": {
                  "id": 7178,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7177,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7179,
                      "src": "868:7:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7176,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "868:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "867:9:25"
                },
                "scope": 7180,
                "src": "828:49:25",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 7181,
            "src": "34:845:25"
          }
        ],
        "src": "34:846:25"
      }
    },
    "contracts/interfaces/IMateriaLiquidityRemover.sol": {
      "id": 26,
      "AST": {
        "absolutePath": "contracts/interfaces/IMateriaLiquidityRemover.sol",
        "exportedSymbols": {
          "IMateriaLiquidityRemover": [
            7200
          ]
        },
        "id": 7201,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 7182,
            "literals": [
              "solidity",
              "^",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "34:23:26"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 7200,
            "linearizedBaseContracts": [
              7200
            ],
            "name": "IMateriaLiquidityRemover",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "13928082",
                "id": 7199,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidity",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7193,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7184,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 7199,
                      "src": "594:13:26",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7183,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "594:7:26",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7186,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 7199,
                      "src": "617:17:26",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7185,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "617:7:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7188,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7199,
                      "src": "644:22:26",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7187,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "644:7:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7190,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7199,
                      "src": "676:23:26",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7189,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "676:7:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7192,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7199,
                      "src": "709:16:26",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7191,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "709:7:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "584:147:26"
                },
                "returnParameters": {
                  "id": 7198,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7195,
                      "mutability": "mutable",
                      "name": "amountBridge",
                      "nodeType": "VariableDeclaration",
                      "scope": 7199,
                      "src": "750:20:26",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7194,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "750:7:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7197,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 7199,
                      "src": "772:19:26",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7196,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "772:7:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "749:43:26"
                },
                "scope": 7200,
                "src": "560:233:26",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 7201,
            "src": "519:276:26"
          }
        ],
        "src": "34:762:26"
      }
    },
    "contracts/interfaces/IMateriaOrchestrator.sol": {
      "id": 27,
      "AST": {
        "absolutePath": "contracts/interfaces/IMateriaOrchestrator.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ],
          "IDoubleProxy": [
            5811
          ],
          "IERC1155": [
            5933
          ],
          "IERC1155Receiver": [
            5971
          ],
          "IERC1155Views": [
            6015
          ],
          "IERC165": [
            6027
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ],
          "IERC20WrapperV1": [
            6161
          ],
          "IEthItemInteroperableInterface": [
            6250
          ],
          "IEthItemMainInterface": [
            6365
          ],
          "IEthItemModelBase": [
            6392
          ],
          "IMateriaFactory": [
            7180
          ],
          "IMateriaOrchestrator": [
            7665
          ]
        },
        "id": 7666,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 7202,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "34:22:27"
          },
          {
            "absolutePath": "contracts/interfaces/IERC1155Receiver.sol",
            "file": "./IERC1155Receiver.sol",
            "id": 7203,
            "nodeType": "ImportDirective",
            "scope": 7666,
            "sourceUnit": 5972,
            "src": "58:32:27",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaFactory.sol",
            "file": "./IMateriaFactory.sol",
            "id": 7204,
            "nodeType": "ImportDirective",
            "scope": 7666,
            "sourceUnit": 7181,
            "src": "91:31:27",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "./IERC20.sol",
            "id": 7205,
            "nodeType": "ImportDirective",
            "scope": 7666,
            "sourceUnit": 6106,
            "src": "123:22:27",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20WrapperV1.sol",
            "file": "./IERC20WrapperV1.sol",
            "id": 7206,
            "nodeType": "ImportDirective",
            "scope": 7666,
            "sourceUnit": 6162,
            "src": "146:31:27",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IDoubleProxy.sol",
            "file": "./IDoubleProxy.sol",
            "id": 7207,
            "nodeType": "ImportDirective",
            "scope": 7666,
            "sourceUnit": 5812,
            "src": "178:28:27",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 7208,
                  "name": "IERC1155Receiver",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5971,
                  "src": "242:16:27"
                },
                "id": 7209,
                "nodeType": "InheritanceSpecifier",
                "src": "242:16:27"
              }
            ],
            "contractDependencies": [
              5971
            ],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 7665,
            "linearizedBaseContracts": [
              7665,
              5971
            ],
            "name": "IMateriaOrchestrator",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "cbd99d03",
                "id": 7214,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setDoubleProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7212,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7211,
                      "mutability": "mutable",
                      "name": "newDoubleProxy",
                      "nodeType": "VariableDeclaration",
                      "scope": 7214,
                      "src": "289:22:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7210,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "289:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "288:24:27"
                },
                "returnParameters": {
                  "id": 7213,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "321:0:27"
                },
                "scope": 7665,
                "src": "265:57:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "23ae8401",
                "id": 7219,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setBridgeToken",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7217,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7216,
                      "mutability": "mutable",
                      "name": "newBridgeToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 7219,
                      "src": "352:22:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7215,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "352:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "351:24:27"
                },
                "returnParameters": {
                  "id": 7218,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "384:0:27"
                },
                "scope": 7665,
                "src": "328:57:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "d7565a0c",
                "id": 7224,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setErc20Wrapper",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7222,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7221,
                      "mutability": "mutable",
                      "name": "newErc20Wrapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 7224,
                      "src": "416:23:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7220,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "416:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "415:25:27"
                },
                "returnParameters": {
                  "id": 7223,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "449:0:27"
                },
                "scope": 7665,
                "src": "391:59:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "5bb47808",
                "id": 7229,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFactory",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7227,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7226,
                      "mutability": "mutable",
                      "name": "newFactory",
                      "nodeType": "VariableDeclaration",
                      "scope": 7229,
                      "src": "476:18:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7225,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "476:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "475:20:27"
                },
                "returnParameters": {
                  "id": 7228,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "504:0:27"
                },
                "scope": 7665,
                "src": "456:49:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "02af0fb5",
                "id": 7234,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setEthereumObjectId",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7232,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7231,
                      "mutability": "mutable",
                      "name": "newEthereumObjectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7234,
                      "src": "540:27:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7230,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "540:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "539:29:27"
                },
                "returnParameters": {
                  "id": 7233,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "577:0:27"
                },
                "scope": 7665,
                "src": "511:67:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "9c82f2a4",
                "id": 7239,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setSwapper",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7237,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7236,
                      "mutability": "mutable",
                      "name": "_swapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 7239,
                      "src": "604:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7235,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "604:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "603:18:27"
                },
                "returnParameters": {
                  "id": 7238,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "630:0:27"
                },
                "scope": 7665,
                "src": "584:47:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "9f184011",
                "id": 7244,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setLiquidityAdder",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7242,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7241,
                      "mutability": "mutable",
                      "name": "_adder",
                      "nodeType": "VariableDeclaration",
                      "scope": 7244,
                      "src": "664:14:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7240,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "664:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "663:16:27"
                },
                "returnParameters": {
                  "id": 7243,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "688:0:27"
                },
                "scope": 7665,
                "src": "637:52:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "781cef2a",
                "id": 7249,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setLiquidityRemover",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7247,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7246,
                      "mutability": "mutable",
                      "name": "_remover",
                      "nodeType": "VariableDeclaration",
                      "scope": 7249,
                      "src": "724:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7245,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "724:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "723:18:27"
                },
                "returnParameters": {
                  "id": 7248,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "750:0:27"
                },
                "scope": 7665,
                "src": "695:56:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "9e6371ba",
                "id": 7254,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "retire",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7252,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7251,
                      "mutability": "mutable",
                      "name": "newOrchestrator",
                      "nodeType": "VariableDeclaration",
                      "scope": 7254,
                      "src": "773:23:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7250,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "773:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "772:25:27"
                },
                "returnParameters": {
                  "id": 7253,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "806:0:27"
                },
                "scope": 7665,
                "src": "757:50:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "11f38472",
                "id": 7263,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFees",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7261,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7256,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 7263,
                      "src": "839:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7255,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "839:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7258,
                      "mutability": "mutable",
                      "name": "materiaFee",
                      "nodeType": "VariableDeclaration",
                      "scope": 7263,
                      "src": "862:18:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7257,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "862:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7260,
                      "mutability": "mutable",
                      "name": "swapFee",
                      "nodeType": "VariableDeclaration",
                      "scope": 7263,
                      "src": "890:15:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7259,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "890:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "829:82:27"
                },
                "returnParameters": {
                  "id": 7262,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "920:0:27"
                },
                "scope": 7665,
                "src": "813:108:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "b9bdb4ef",
                "id": 7270,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setDefaultFees",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7268,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7265,
                      "mutability": "mutable",
                      "name": "materiaFee",
                      "nodeType": "VariableDeclaration",
                      "scope": 7270,
                      "src": "951:18:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7264,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "951:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7267,
                      "mutability": "mutable",
                      "name": "swapFee",
                      "nodeType": "VariableDeclaration",
                      "scope": 7270,
                      "src": "971:15:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7266,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "971:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "950:37:27"
                },
                "returnParameters": {
                  "id": 7269,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "996:0:27"
                },
                "scope": 7665,
                "src": "927:70:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "f46901ed",
                "id": 7275,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeTo",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7273,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7272,
                      "mutability": "mutable",
                      "name": "feeTo",
                      "nodeType": "VariableDeclaration",
                      "scope": 7275,
                      "src": "1021:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7271,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1021:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1020:15:27"
                },
                "returnParameters": {
                  "id": 7274,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1044:0:27"
                },
                "scope": 7665,
                "src": "1003:42:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "b6ec79fe",
                "id": 7284,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getCrumbs",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7282,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7277,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 7284,
                      "src": "1079:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7276,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1079:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7279,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 7284,
                      "src": "1102:14:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7278,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1102:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7281,
                      "mutability": "mutable",
                      "name": "receiver",
                      "nodeType": "VariableDeclaration",
                      "scope": 7284,
                      "src": "1126:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7280,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1126:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1069:79:27"
                },
                "returnParameters": {
                  "id": 7283,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1157:0:27"
                },
                "scope": 7665,
                "src": "1051:107:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "c45a0155",
                "id": 7290,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "factory",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7285,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1180:2:27"
                },
                "returnParameters": {
                  "id": 7289,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7288,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7290,
                      "src": "1206:15:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                        "typeString": "contract IMateriaFactory"
                      },
                      "typeName": {
                        "id": 7287,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 7286,
                          "name": "IMateriaFactory",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 7180,
                          "src": "1206:15:27"
                        },
                        "referencedDeclaration": 7180,
                        "src": "1206:15:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                          "typeString": "contract IMateriaFactory"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1205:17:27"
                },
                "scope": 7665,
                "src": "1164:59:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "f4734b0c",
                "id": 7296,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "bridgeToken",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7291,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1249:2:27"
                },
                "returnParameters": {
                  "id": 7295,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7294,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7296,
                      "src": "1275:6:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$6105",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "id": 7293,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 7292,
                          "name": "IERC20",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 6105,
                          "src": "1275:6:27"
                        },
                        "referencedDeclaration": 6105,
                        "src": "1275:6:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$6105",
                          "typeString": "contract IERC20"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1274:8:27"
                },
                "scope": 7665,
                "src": "1229:54:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "1b5f58c8",
                "id": 7302,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "erc20Wrapper",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7297,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1310:2:27"
                },
                "returnParameters": {
                  "id": 7301,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7300,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7302,
                      "src": "1336:15:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                        "typeString": "contract IERC20WrapperV1"
                      },
                      "typeName": {
                        "id": 7299,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 7298,
                          "name": "IERC20WrapperV1",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 6161,
                          "src": "1336:15:27"
                        },
                        "referencedDeclaration": 6161,
                        "src": "1336:15:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20WrapperV1_$6161",
                          "typeString": "contract IERC20WrapperV1"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1335:17:27"
                },
                "scope": 7665,
                "src": "1289:64:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "be745fff",
                "id": 7307,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "ETHEREUM_OBJECT_ID",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7303,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1386:2:27"
                },
                "returnParameters": {
                  "id": 7306,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7305,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7307,
                      "src": "1412:7:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7304,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1412:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1411:9:27"
                },
                "scope": 7665,
                "src": "1359:62:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "2b3297f9",
                "id": 7312,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapper",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7308,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1443:2:27"
                },
                "returnParameters": {
                  "id": 7311,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7310,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7312,
                      "src": "1469:7:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7309,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1469:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1468:9:27"
                },
                "scope": 7665,
                "src": "1427:51:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "55809f9f",
                "id": 7317,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "liquidityAdder",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7313,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1507:2:27"
                },
                "returnParameters": {
                  "id": 7316,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7315,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7317,
                      "src": "1533:7:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7314,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1533:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1532:9:27"
                },
                "scope": 7665,
                "src": "1484:58:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "cafd47df",
                "id": 7322,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "liquidityRemover",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7318,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1573:2:27"
                },
                "returnParameters": {
                  "id": 7321,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7320,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7322,
                      "src": "1599:7:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7319,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1599:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1598:9:27"
                },
                "scope": 7665,
                "src": "1548:60:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "4eb9b592",
                "id": 7328,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "doubleProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7323,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1634:2:27"
                },
                "returnParameters": {
                  "id": 7327,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7326,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7328,
                      "src": "1660:12:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IDoubleProxy_$5811",
                        "typeString": "contract IDoubleProxy"
                      },
                      "typeName": {
                        "id": 7325,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 7324,
                          "name": "IDoubleProxy",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 5811,
                          "src": "1660:12:27"
                        },
                        "referencedDeclaration": 5811,
                        "src": "1660:12:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDoubleProxy_$5811",
                          "typeString": "contract IDoubleProxy"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1659:14:27"
                },
                "scope": 7665,
                "src": "1614:60:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "9187aaca",
                "id": 7351,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "addLiquidity",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7343,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7330,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "1735:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7329,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1735:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7332,
                      "mutability": "mutable",
                      "name": "tokenAmountDesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "1758:26:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7331,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1758:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7334,
                      "mutability": "mutable",
                      "name": "bridgeAmountDesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "1794:27:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7333,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1794:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7336,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "1831:22:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7335,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1831:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7338,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "1863:23:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7337,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1863:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7340,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "1896:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7339,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1896:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7342,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "1916:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7341,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1916:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1725:213:27"
                },
                "returnParameters": {
                  "id": 7350,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7345,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "1986:15:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7344,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1986:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7347,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "2015:15:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7346,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2015:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7349,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "2044:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7348,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2044:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1972:99:27"
                },
                "scope": 7665,
                "src": "1704:368:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "bb8a88bb",
                "id": 7370,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "addLiquidityETH",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7362,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7353,
                      "mutability": "mutable",
                      "name": "bridgeAmountDesired",
                      "nodeType": "VariableDeclaration",
                      "scope": 7370,
                      "src": "2112:27:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7352,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2112:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7355,
                      "mutability": "mutable",
                      "name": "EthAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7370,
                      "src": "2149:20:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7354,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2149:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7357,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7370,
                      "src": "2179:23:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7356,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2179:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7359,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7370,
                      "src": "2212:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7358,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2212:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7361,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7370,
                      "src": "2232:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7360,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2232:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2102:152:27"
                },
                "returnParameters": {
                  "id": 7369,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7364,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 7370,
                      "src": "2318:19:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7363,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2318:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7366,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "scope": 7370,
                      "src": "2351:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7365,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2351:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7368,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 7370,
                      "src": "2382:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7367,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2382:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2304:105:27"
                },
                "scope": 7665,
                "src": "2078:332:27",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "96c92f5e",
                "id": 7385,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidity",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7383,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7372,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 7385,
                      "src": "2476:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7371,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2476:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7374,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 7385,
                      "src": "2499:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7373,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2499:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7376,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7385,
                      "src": "2526:22:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7375,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2526:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7378,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7385,
                      "src": "2558:23:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7377,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2558:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7380,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7385,
                      "src": "2591:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7379,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2591:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7382,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7385,
                      "src": "2611:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7381,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2611:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2466:167:27"
                },
                "returnParameters": {
                  "id": 7384,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2642:0:27"
                },
                "scope": 7665,
                "src": "2442:201:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "ee1fae3c",
                "id": 7398,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETH",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7396,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7387,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 7398,
                      "src": "2686:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7386,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2686:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7389,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7398,
                      "src": "2713:23:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7388,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2713:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7391,
                      "mutability": "mutable",
                      "name": "EthAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7398,
                      "src": "2746:20:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7390,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2746:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7393,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7398,
                      "src": "2776:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7392,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2776:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7395,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7398,
                      "src": "2796:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7394,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2796:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2676:142:27"
                },
                "returnParameters": {
                  "id": 7397,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2827:0:27"
                },
                "scope": 7665,
                "src": "2649:179:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "104870fd",
                "id": 7421,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityWithPermit",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7419,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7400,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 7421,
                      "src": "2878:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7399,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2878:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7402,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 7421,
                      "src": "2901:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7401,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2901:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7404,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7421,
                      "src": "2928:22:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7403,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2928:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7406,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7421,
                      "src": "2960:23:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7405,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2960:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7408,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7421,
                      "src": "2993:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7407,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2993:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7410,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7421,
                      "src": "3013:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7409,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3013:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7412,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 7421,
                      "src": "3039:15:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7411,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3039:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7414,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 7421,
                      "src": "3064:7:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 7413,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3064:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7416,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 7421,
                      "src": "3081:9:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7415,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3081:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7418,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 7421,
                      "src": "3100:9:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7417,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3100:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2868:247:27"
                },
                "returnParameters": {
                  "id": 7420,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3124:0:27"
                },
                "scope": 7665,
                "src": "2834:291:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "678700e0",
                "id": 7442,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHWithPermit",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7440,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7423,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 7442,
                      "src": "3178:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7422,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3178:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7425,
                      "mutability": "mutable",
                      "name": "ethAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7442,
                      "src": "3205:20:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7424,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3205:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7427,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7442,
                      "src": "3235:23:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7426,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3235:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7429,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7442,
                      "src": "3268:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7428,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3268:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7431,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7442,
                      "src": "3288:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7430,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3288:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7433,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 7442,
                      "src": "3314:15:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7432,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3314:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7435,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 7442,
                      "src": "3339:7:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 7434,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3339:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7437,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 7442,
                      "src": "3356:9:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7436,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3356:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7439,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 7442,
                      "src": "3375:9:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7438,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3375:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3168:222:27"
                },
                "returnParameters": {
                  "id": 7441,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3399:0:27"
                },
                "scope": 7665,
                "src": "3131:269:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "3d0c2a34",
                "id": 7457,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityAndUnwrap",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7455,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7444,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 7457,
                      "src": "3454:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7443,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3454:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7446,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 7457,
                      "src": "3477:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7445,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3477:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7448,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7457,
                      "src": "3504:22:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7447,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3504:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7450,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7457,
                      "src": "3536:23:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7449,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3536:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7452,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7457,
                      "src": "3569:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7451,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3569:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7454,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7457,
                      "src": "3589:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7453,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3589:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3444:167:27"
                },
                "returnParameters": {
                  "id": 7456,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3620:0:27"
                },
                "scope": 7665,
                "src": "3411:210:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "5909889d",
                "id": 7480,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityWithPermitAndUnwrap",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7478,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7459,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 7480,
                      "src": "3680:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7458,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3680:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7461,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 7480,
                      "src": "3703:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7460,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3703:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7463,
                      "mutability": "mutable",
                      "name": "tokenAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7480,
                      "src": "3730:22:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7462,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3730:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7465,
                      "mutability": "mutable",
                      "name": "bridgeAmountMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7480,
                      "src": "3762:23:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7464,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3762:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7467,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7480,
                      "src": "3795:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7466,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3795:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7469,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7480,
                      "src": "3815:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7468,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3815:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7471,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 7480,
                      "src": "3841:15:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7470,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3841:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7473,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 7480,
                      "src": "3866:7:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 7472,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3866:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7475,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 7480,
                      "src": "3883:9:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7474,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3883:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7477,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 7480,
                      "src": "3902:9:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7476,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3902:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3670:247:27"
                },
                "returnParameters": {
                  "id": 7479,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3926:0:27"
                },
                "scope": 7665,
                "src": "3627:300:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "38ed1739",
                "id": 7497,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForTokens",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7492,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7482,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 7497,
                      "src": "3992:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7481,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3992:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7484,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7497,
                      "src": "4018:20:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7483,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4018:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7487,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 7497,
                      "src": "4048:21:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7485,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4048:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7486,
                        "nodeType": "ArrayTypeName",
                        "src": "4048:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7489,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7497,
                      "src": "4079:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7488,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4079:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7491,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7497,
                      "src": "4099:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7490,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4099:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3982:139:27"
                },
                "returnParameters": {
                  "id": 7496,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7495,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 7497,
                      "src": "4140:24:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7493,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4140:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7494,
                        "nodeType": "ArrayTypeName",
                        "src": "4140:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4139:26:27"
                },
                "scope": 7665,
                "src": "3949:217:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "8803dbee",
                "id": 7514,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapTokensForExactTokens",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7509,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7499,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 7514,
                      "src": "4215:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7498,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4215:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7501,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 7514,
                      "src": "4242:19:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7500,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4242:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7504,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 7514,
                      "src": "4271:21:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7502,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4271:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7503,
                        "nodeType": "ArrayTypeName",
                        "src": "4271:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7506,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7514,
                      "src": "4302:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7505,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4302:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7508,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7514,
                      "src": "4322:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7507,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4322:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4205:139:27"
                },
                "returnParameters": {
                  "id": 7513,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7512,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 7514,
                      "src": "4363:24:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7510,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4363:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7511,
                        "nodeType": "ArrayTypeName",
                        "src": "4363:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4362:26:27"
                },
                "scope": 7665,
                "src": "4172:217:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "7ff36ab5",
                "id": 7526,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactETHForTokens",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7524,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7516,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7526,
                      "src": "4435:20:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7515,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4435:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7519,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 7526,
                      "src": "4465:21:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7517,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4465:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7518,
                        "nodeType": "ArrayTypeName",
                        "src": "4465:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7521,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7526,
                      "src": "4496:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7520,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4496:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7523,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7526,
                      "src": "4516:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7522,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4516:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4425:113:27"
                },
                "returnParameters": {
                  "id": 7525,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4555:0:27"
                },
                "scope": 7665,
                "src": "4395:161:27",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "4a25d94a",
                "id": 7540,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapTokensForExactETH",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7538,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7528,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 7540,
                      "src": "4602:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7527,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4602:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7530,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "scope": 7540,
                      "src": "4629:19:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7529,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4629:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7533,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 7540,
                      "src": "4658:21:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7531,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4658:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7532,
                        "nodeType": "ArrayTypeName",
                        "src": "4658:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7535,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7540,
                      "src": "4689:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7534,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4689:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7537,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7540,
                      "src": "4709:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7536,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4709:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4592:139:27"
                },
                "returnParameters": {
                  "id": 7539,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4740:0:27"
                },
                "scope": 7665,
                "src": "4562:179:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "18cbafe5",
                "id": 7554,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForETH",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7552,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7542,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 7554,
                      "src": "4787:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7541,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4787:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7544,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "scope": 7554,
                      "src": "4813:20:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7543,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4813:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7547,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 7554,
                      "src": "4843:21:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7545,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4843:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7546,
                        "nodeType": "ArrayTypeName",
                        "src": "4843:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7549,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7554,
                      "src": "4874:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7548,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4874:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7551,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7554,
                      "src": "4894:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7550,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4894:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4777:139:27"
                },
                "returnParameters": {
                  "id": 7553,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4925:0:27"
                },
                "scope": 7665,
                "src": "4747:179:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "fb3bdb41",
                "id": 7566,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapETHForExactTokens",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7564,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7556,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 7566,
                      "src": "4972:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7555,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4972:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7559,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 7566,
                      "src": "4999:21:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7557,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4999:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7558,
                        "nodeType": "ArrayTypeName",
                        "src": "4999:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7561,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7566,
                      "src": "5030:10:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7560,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5030:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7563,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7566,
                      "src": "5050:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7562,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5050:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4962:110:27"
                },
                "returnParameters": {
                  "id": 7565,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "5089:0:27"
                },
                "scope": 7665,
                "src": "4932:158:27",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "47883c37",
                "id": 7577,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "isEthItem",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7569,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7568,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "5140:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7567,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5140:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5139:15:27"
                },
                "returnParameters": {
                  "id": 7576,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7571,
                      "mutability": "mutable",
                      "name": "collection",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "5215:18:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7570,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5215:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7573,
                      "mutability": "mutable",
                      "name": "ethItem",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "5247:12:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7572,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5247:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7575,
                      "mutability": "mutable",
                      "name": "itemId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "5273:14:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7574,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5273:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5201:96:27"
                },
                "scope": 7665,
                "src": "5121:177:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "7796473a",
                "id": 7590,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "isNativeItem",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7580,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7579,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 7590,
                      "src": "5330:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7578,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5330:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5329:15:27"
                },
                "returnParameters": {
                  "id": 7589,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7582,
                      "mutability": "mutable",
                      "name": "collection",
                      "nodeType": "VariableDeclaration",
                      "scope": 7590,
                      "src": "5405:18:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7581,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5405:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7584,
                      "mutability": "mutable",
                      "name": "native",
                      "nodeType": "VariableDeclaration",
                      "scope": 7590,
                      "src": "5437:11:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7583,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5437:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7586,
                      "mutability": "mutable",
                      "name": "itemId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7590,
                      "src": "5462:14:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7585,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5462:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7588,
                      "mutability": "mutable",
                      "name": "decimals",
                      "nodeType": "VariableDeclaration",
                      "scope": 7590,
                      "src": "5490:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7587,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5490:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5391:125:27"
                },
                "scope": 7665,
                "src": "5308:209:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "1df19953",
                "id": 7609,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "wrap",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7603,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7592,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 7609,
                      "src": "5551:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7591,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5551:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7594,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 7609,
                      "src": "5574:14:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7593,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5574:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7596,
                      "mutability": "mutable",
                      "name": "wrapper",
                      "nodeType": "VariableDeclaration",
                      "scope": 7609,
                      "src": "5598:15:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7595,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5598:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7598,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 7609,
                      "src": "5623:12:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7597,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5623:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7600,
                      "mutability": "mutable",
                      "name": "receiver",
                      "nodeType": "VariableDeclaration",
                      "scope": 7609,
                      "src": "5645:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7599,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5645:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7602,
                      "mutability": "mutable",
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 7609,
                      "src": "5671:22:27",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7601,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5671:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5541:158:27"
                },
                "returnParameters": {
                  "id": 7608,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7605,
                      "mutability": "mutable",
                      "name": "interoperable",
                      "nodeType": "VariableDeclaration",
                      "scope": 7609,
                      "src": "5727:21:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7604,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5727:7:27",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7607,
                      "mutability": "mutable",
                      "name": "itemAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 7609,
                      "src": "5758:18:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7606,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5758:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5717:65:27"
                },
                "scope": 7665,
                "src": "5528:255:27",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "ad615dec",
                "id": 7620,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "quote",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7616,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7611,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "scope": 7620,
                      "src": "5813:15:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7610,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5813:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7613,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "scope": 7620,
                      "src": "5838:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7612,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5838:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7615,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "scope": 7620,
                      "src": "5864:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7614,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5864:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5803:83:27"
                },
                "returnParameters": {
                  "id": 7619,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7618,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "scope": 7620,
                      "src": "5910:15:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7617,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5910:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5909:17:27"
                },
                "scope": 7665,
                "src": "5789:138:27",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "054d50d4",
                "id": 7631,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountOut",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7627,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7622,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 7631,
                      "src": "5964:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7621,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5964:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7624,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 7631,
                      "src": "5990:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7623,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5990:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7626,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 7631,
                      "src": "6017:18:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7625,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6017:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5954:87:27"
                },
                "returnParameters": {
                  "id": 7630,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7629,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 7631,
                      "src": "6065:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7628,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6065:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6064:19:27"
                },
                "scope": 7665,
                "src": "5933:151:27",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "85f8c259",
                "id": 7642,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountIn",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7638,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7633,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 7642,
                      "src": "6120:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7632,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6120:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7635,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 7642,
                      "src": "6147:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7634,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6147:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7637,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 7642,
                      "src": "6174:18:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7636,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6174:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6110:88:27"
                },
                "returnParameters": {
                  "id": 7641,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7640,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 7642,
                      "src": "6222:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7639,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6222:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6221:18:27"
                },
                "scope": 7665,
                "src": "6090:150:27",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "d06ca61f",
                "id": 7653,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsOut",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7648,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7644,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 7653,
                      "src": "6269:16:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7643,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6269:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7647,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 7653,
                      "src": "6287:21:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7645,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6287:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7646,
                        "nodeType": "ArrayTypeName",
                        "src": "6287:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6268:41:27"
                },
                "returnParameters": {
                  "id": 7652,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7651,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 7653,
                      "src": "6333:24:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7649,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6333:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7650,
                        "nodeType": "ArrayTypeName",
                        "src": "6333:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6332:26:27"
                },
                "scope": 7665,
                "src": "6246:113:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "1f00ca74",
                "id": 7664,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsIn",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7659,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7655,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 7664,
                      "src": "6387:17:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7654,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6387:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7658,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 7664,
                      "src": "6406:21:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7656,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6406:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7657,
                        "nodeType": "ArrayTypeName",
                        "src": "6406:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6386:42:27"
                },
                "returnParameters": {
                  "id": 7663,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7662,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 7664,
                      "src": "6452:24:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7660,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6452:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7661,
                        "nodeType": "ArrayTypeName",
                        "src": "6452:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "6451:26:27"
                },
                "scope": 7665,
                "src": "6365:113:27",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 7666,
            "src": "208:6272:27"
          }
        ],
        "src": "34:6447:27"
      }
    },
    "contracts/interfaces/IMateriaPair.sol": {
      "id": 28,
      "AST": {
        "absolutePath": "contracts/interfaces/IMateriaPair.sol",
        "exportedSymbols": {
          "IMateriaPair": [
            7944
          ]
        },
        "id": 7945,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 7667,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:28"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 7944,
            "linearizedBaseContracts": [
              7944
            ],
            "name": "IMateriaPair",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "id": 7675,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7674,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7669,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 7675,
                      "src": "70:21:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7668,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "70:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7671,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "scope": 7675,
                      "src": "93:23:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7670,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "93:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7673,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 7675,
                      "src": "118:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7672,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "118:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "69:63:28"
                },
                "src": "55:78:28"
              },
              {
                "anonymous": false,
                "id": 7683,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7682,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7677,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 7683,
                      "src": "153:20:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7676,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "153:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7679,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7683,
                      "src": "175:18:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7678,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "175:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7681,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 7683,
                      "src": "195:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7680,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "195:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "152:57:28"
                },
                "src": "138:72:28"
              },
              {
                "functionSelector": "06fdde03",
                "id": 7688,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "name",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7684,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "229:2:28"
                },
                "returnParameters": {
                  "id": 7687,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7686,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7688,
                      "src": "255:13:28",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7685,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "255:6:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "254:15:28"
                },
                "scope": 7944,
                "src": "216:54:28",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "95d89b41",
                "id": 7693,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "symbol",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7689,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "291:2:28"
                },
                "returnParameters": {
                  "id": 7692,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7691,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7693,
                      "src": "317:13:28",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7690,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "317:6:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "316:15:28"
                },
                "scope": 7944,
                "src": "276:56:28",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "313ce567",
                "id": 7698,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7694,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "355:2:28"
                },
                "returnParameters": {
                  "id": 7697,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7696,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7698,
                      "src": "381:5:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 7695,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "381:5:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "380:7:28"
                },
                "scope": 7944,
                "src": "338:50:28",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "18160ddd",
                "id": 7703,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7699,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "414:2:28"
                },
                "returnParameters": {
                  "id": 7702,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7701,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7703,
                      "src": "440:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7700,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "440:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "439:9:28"
                },
                "scope": 7944,
                "src": "394:55:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "70a08231",
                "id": 7710,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7706,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7705,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 7710,
                      "src": "474:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7704,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "474:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "473:15:28"
                },
                "returnParameters": {
                  "id": 7709,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7708,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7710,
                      "src": "512:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7707,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "512:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "511:9:28"
                },
                "scope": 7944,
                "src": "455:66:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "dd62ed3e",
                "id": 7719,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7715,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7712,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 7719,
                      "src": "546:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7711,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "546:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7714,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "scope": 7719,
                      "src": "561:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7713,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "561:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "545:32:28"
                },
                "returnParameters": {
                  "id": 7718,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7717,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7719,
                      "src": "601:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7716,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "601:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "600:9:28"
                },
                "scope": 7944,
                "src": "527:83:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "095ea7b3",
                "id": 7728,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7724,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7721,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "scope": 7728,
                      "src": "633:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7720,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "633:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7723,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 7728,
                      "src": "650:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7722,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "650:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "632:32:28"
                },
                "returnParameters": {
                  "id": 7727,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7726,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7728,
                      "src": "683:4:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7725,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "683:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "682:6:28"
                },
                "scope": 7944,
                "src": "616:73:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "a9059cbb",
                "id": 7737,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7733,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7730,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7737,
                      "src": "713:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7729,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "713:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7732,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 7737,
                      "src": "725:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7731,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "725:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "712:27:28"
                },
                "returnParameters": {
                  "id": 7736,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7735,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7737,
                      "src": "758:4:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7734,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "758:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "757:6:28"
                },
                "scope": 7944,
                "src": "695:69:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "23b872dd",
                "id": 7748,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7744,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7739,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 7748,
                      "src": "801:12:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7738,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "801:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7741,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7748,
                      "src": "823:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7740,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "823:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7743,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 7748,
                      "src": "843:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7742,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "843:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "791:71:28"
                },
                "returnParameters": {
                  "id": 7747,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7746,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7748,
                      "src": "881:4:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7745,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "881:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "880:6:28"
                },
                "scope": 7944,
                "src": "770:117:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "3644e515",
                "id": 7753,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "DOMAIN_SEPARATOR",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7749,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "918:2:28"
                },
                "returnParameters": {
                  "id": 7752,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7751,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7753,
                      "src": "944:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7750,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "944:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "943:9:28"
                },
                "scope": 7944,
                "src": "893:60:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "30adf81f",
                "id": 7758,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "PERMIT_TYPEHASH",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7754,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "983:2:28"
                },
                "returnParameters": {
                  "id": 7757,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7756,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7758,
                      "src": "1009:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7755,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1009:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1008:9:28"
                },
                "scope": 7944,
                "src": "959:59:28",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "7ecebe00",
                "id": 7765,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "nonces",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7761,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7760,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 7765,
                      "src": "1040:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7759,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1040:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1039:15:28"
                },
                "returnParameters": {
                  "id": 7764,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7763,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7765,
                      "src": "1078:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7762,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1078:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1077:9:28"
                },
                "scope": 7944,
                "src": "1024:63:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "d505accf",
                "id": 7782,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7780,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7767,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 7782,
                      "src": "1118:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7766,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1118:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7769,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "scope": 7782,
                      "src": "1141:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7768,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1141:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7771,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 7782,
                      "src": "1166:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7770,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1166:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7773,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 7782,
                      "src": "1189:16:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7772,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1189:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7775,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 7782,
                      "src": "1215:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 7774,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1215:5:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7777,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 7782,
                      "src": "1232:9:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7776,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1232:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7779,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 7782,
                      "src": "1251:9:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7778,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1251:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1108:158:28"
                },
                "returnParameters": {
                  "id": 7781,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1275:0:28"
                },
                "scope": 7944,
                "src": "1093:183:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "anonymous": false,
                "id": 7790,
                "name": "Mint",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7789,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7784,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "scope": 7790,
                      "src": "1293:22:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7783,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1293:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7786,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "scope": 7790,
                      "src": "1317:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7785,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1317:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7788,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "scope": 7790,
                      "src": "1334:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7787,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1334:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1292:58:28"
                },
                "src": "1282:69:28"
              },
              {
                "anonymous": false,
                "id": 7800,
                "name": "Burn",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7799,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7792,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "scope": 7800,
                      "src": "1367:22:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7791,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1367:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7794,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "scope": 7800,
                      "src": "1391:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7793,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1391:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7796,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "scope": 7800,
                      "src": "1408:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7795,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1408:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7798,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7800,
                      "src": "1425:18:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7797,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1425:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1366:78:28"
                },
                "src": "1356:89:28"
              },
              {
                "anonymous": false,
                "id": 7814,
                "name": "Swap",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7813,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7802,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "scope": 7814,
                      "src": "1470:22:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7801,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1470:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7804,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0In",
                      "nodeType": "VariableDeclaration",
                      "scope": 7814,
                      "src": "1502:17:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7803,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1502:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7806,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1In",
                      "nodeType": "VariableDeclaration",
                      "scope": 7814,
                      "src": "1529:17:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7805,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1529:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7808,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0Out",
                      "nodeType": "VariableDeclaration",
                      "scope": 7814,
                      "src": "1556:18:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7807,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1556:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7810,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1Out",
                      "nodeType": "VariableDeclaration",
                      "scope": 7814,
                      "src": "1584:18:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7809,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1584:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7812,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7814,
                      "src": "1612:18:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7811,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1612:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1460:176:28"
                },
                "src": "1450:187:28"
              },
              {
                "anonymous": false,
                "id": 7820,
                "name": "Sync",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7819,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7816,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "reserve0",
                      "nodeType": "VariableDeclaration",
                      "scope": 7820,
                      "src": "1653:16:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 7815,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1653:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7818,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "reserve1",
                      "nodeType": "VariableDeclaration",
                      "scope": 7820,
                      "src": "1671:16:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 7817,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1671:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1652:36:28"
                },
                "src": "1642:47:28"
              },
              {
                "functionSelector": "ba9a7a56",
                "id": 7825,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "MINIMUM_LIQUIDITY",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7821,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1721:2:28"
                },
                "returnParameters": {
                  "id": 7824,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7823,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7825,
                      "src": "1747:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7822,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1747:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1746:9:28"
                },
                "scope": 7944,
                "src": "1695:61:28",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "c45a0155",
                "id": 7830,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "factory",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7826,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1778:2:28"
                },
                "returnParameters": {
                  "id": 7829,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7828,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7830,
                      "src": "1804:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7827,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1804:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1803:9:28"
                },
                "scope": 7944,
                "src": "1762:51:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "0dfe1681",
                "id": 7835,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "token0",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7831,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1834:2:28"
                },
                "returnParameters": {
                  "id": 7834,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7833,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7835,
                      "src": "1860:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7832,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1860:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1859:9:28"
                },
                "scope": 7944,
                "src": "1819:50:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "d21220a7",
                "id": 7840,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "token1",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7836,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1890:2:28"
                },
                "returnParameters": {
                  "id": 7839,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7838,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7840,
                      "src": "1916:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7837,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1916:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1915:9:28"
                },
                "scope": 7944,
                "src": "1875:50:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "0902f1ac",
                "id": 7849,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getReserves",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7841,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1951:2:28"
                },
                "returnParameters": {
                  "id": 7848,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7843,
                      "mutability": "mutable",
                      "name": "reserve0",
                      "nodeType": "VariableDeclaration",
                      "scope": 7849,
                      "src": "2014:16:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 7842,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "2014:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7845,
                      "mutability": "mutable",
                      "name": "reserve1",
                      "nodeType": "VariableDeclaration",
                      "scope": 7849,
                      "src": "2044:16:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 7844,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "2044:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7847,
                      "mutability": "mutable",
                      "name": "blockTimestampLast",
                      "nodeType": "VariableDeclaration",
                      "scope": 7849,
                      "src": "2074:25:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 7846,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2074:6:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2000:109:28"
                },
                "scope": 7944,
                "src": "1931:179:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "5909c0d5",
                "id": 7854,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "price0CumulativeLast",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7850,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2145:2:28"
                },
                "returnParameters": {
                  "id": 7853,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7852,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7854,
                      "src": "2171:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7851,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2171:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2170:9:28"
                },
                "scope": 7944,
                "src": "2116:64:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "5a3d5493",
                "id": 7859,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "price1CumulativeLast",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7855,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2215:2:28"
                },
                "returnParameters": {
                  "id": 7858,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7857,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7859,
                      "src": "2241:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7856,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2241:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2240:9:28"
                },
                "scope": 7944,
                "src": "2186:64:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "7464fc3d",
                "id": 7864,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "kLast",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7860,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2270:2:28"
                },
                "returnParameters": {
                  "id": 7863,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7862,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7864,
                      "src": "2296:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7861,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2296:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2295:9:28"
                },
                "scope": 7944,
                "src": "2256:49:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "6a627842",
                "id": 7871,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7867,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7866,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7871,
                      "src": "2325:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7865,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2325:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2324:12:28"
                },
                "returnParameters": {
                  "id": 7870,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7869,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "scope": 7871,
                      "src": "2355:17:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7868,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2355:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2354:19:28"
                },
                "scope": 7944,
                "src": "2311:63:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "89afcb44",
                "id": 7880,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "burn",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7874,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7873,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7880,
                      "src": "2394:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7872,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2394:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2393:12:28"
                },
                "returnParameters": {
                  "id": 7879,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7876,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "scope": 7880,
                      "src": "2424:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7875,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2424:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7878,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "scope": 7880,
                      "src": "2441:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7877,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2441:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2423:34:28"
                },
                "scope": 7944,
                "src": "2380:78:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "022c0d9f",
                "id": 7891,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swap",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7889,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7882,
                      "mutability": "mutable",
                      "name": "amount0Out",
                      "nodeType": "VariableDeclaration",
                      "scope": 7891,
                      "src": "2487:18:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7881,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2487:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7884,
                      "mutability": "mutable",
                      "name": "amount1Out",
                      "nodeType": "VariableDeclaration",
                      "scope": 7891,
                      "src": "2515:18:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7883,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2515:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7886,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7891,
                      "src": "2543:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7885,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2543:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7888,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 7891,
                      "src": "2563:19:28",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7887,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2563:5:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2477:111:28"
                },
                "returnParameters": {
                  "id": 7890,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2597:0:28"
                },
                "scope": 7944,
                "src": "2464:134:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "bc25cf77",
                "id": 7896,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "skim",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7894,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7893,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 7896,
                      "src": "2618:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7892,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2618:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2617:12:28"
                },
                "returnParameters": {
                  "id": 7895,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2638:0:28"
                },
                "scope": 7944,
                "src": "2604:35:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "fff6cae9",
                "id": 7899,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "sync",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7897,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2658:2:28"
                },
                "returnParameters": {
                  "id": 7898,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2669:0:28"
                },
                "scope": 7944,
                "src": "2645:25:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "eb990c59",
                "id": 7910,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "initialize",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7908,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7901,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7910,
                      "src": "2705:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7900,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2705:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7903,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7910,
                      "src": "2722:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7902,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2722:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7905,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7910,
                      "src": "2739:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7904,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2739:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7907,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7910,
                      "src": "2756:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7906,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2756:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2695:74:28"
                },
                "returnParameters": {
                  "id": 7909,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2778:0:28"
                },
                "scope": 7944,
                "src": "2676:103:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "52114eed",
                "id": 7915,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setMateriaFee",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7913,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7912,
                      "mutability": "mutable",
                      "name": "_materiaFee",
                      "nodeType": "VariableDeclaration",
                      "scope": 7915,
                      "src": "2808:19:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7911,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2808:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2807:21:28"
                },
                "returnParameters": {
                  "id": 7914,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2837:0:28"
                },
                "scope": 7944,
                "src": "2785:53:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "34e19907",
                "id": 7920,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setSwapFee",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7918,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7917,
                      "mutability": "mutable",
                      "name": "_swapFee",
                      "nodeType": "VariableDeclaration",
                      "scope": 7920,
                      "src": "2864:16:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7916,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2864:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2863:18:28"
                },
                "returnParameters": {
                  "id": 7919,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2890:0:28"
                },
                "scope": 7944,
                "src": "2844:47:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "ba1b310c",
                "id": 7925,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "materiaFee",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7921,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2916:2:28"
                },
                "returnParameters": {
                  "id": 7924,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7923,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7925,
                      "src": "2942:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7922,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2942:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2941:9:28"
                },
                "scope": 7944,
                "src": "2897:54:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "54cf2aeb",
                "id": 7930,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapFee",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7926,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2973:2:28"
                },
                "returnParameters": {
                  "id": 7929,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7928,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7930,
                      "src": "2999:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7927,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2999:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2998:9:28"
                },
                "scope": 7944,
                "src": "2957:51:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "8da5cb5b",
                "id": 7935,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "owner",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7931,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3028:2:28"
                },
                "returnParameters": {
                  "id": 7934,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7933,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7935,
                      "src": "3054:7:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7932,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3054:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3053:9:28"
                },
                "scope": 7944,
                "src": "3014:49:28",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "715018a6",
                "id": 7938,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "renounceOwnership",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7936,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3095:2:28"
                },
                "returnParameters": {
                  "id": 7937,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3106:0:28"
                },
                "scope": 7944,
                "src": "3069:38:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "f2fde38b",
                "id": 7943,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferOwnership",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7941,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7940,
                      "mutability": "mutable",
                      "name": "newOwner",
                      "nodeType": "VariableDeclaration",
                      "scope": 7943,
                      "src": "3140:16:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7939,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3140:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3139:18:28"
                },
                "returnParameters": {
                  "id": 7942,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3166:0:28"
                },
                "scope": 7944,
                "src": "3113:54:28",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 7945,
            "src": "26:3143:28"
          }
        ],
        "src": "0:3170:28"
      }
    },
    "contracts/interfaces/INativeV1.sol": {
      "id": 29,
      "AST": {
        "absolutePath": "contracts/interfaces/INativeV1.sol",
        "exportedSymbols": {
          "IBaseTokenData": [
            5764
          ],
          "IERC1155": [
            5933
          ],
          "IERC1155Receiver": [
            5971
          ],
          "IERC1155Views": [
            6015
          ],
          "IERC165": [
            6027
          ],
          "IERC20": [
            6105
          ],
          "IERC20Data": [
            6119
          ],
          "IEthItemInteroperableInterface": [
            6250
          ],
          "IEthItemMainInterface": [
            6365
          ],
          "IEthItemModelBase": [
            6392
          ],
          "INativeV1": [
            8061
          ]
        },
        "id": 8062,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 7946,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "32:22:29"
          },
          {
            "absolutePath": "contracts/interfaces/IEthItemModelBase.sol",
            "file": "./IEthItemModelBase.sol",
            "id": 7947,
            "nodeType": "ImportDirective",
            "scope": 8062,
            "sourceUnit": 6393,
            "src": "56:33:29",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "baseName": {
                  "id": 7949,
                  "name": "IEthItemModelBase",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 6392,
                  "src": "367:17:29"
                },
                "id": 7950,
                "nodeType": "InheritanceSpecifier",
                "src": "367:17:29"
              }
            ],
            "contractDependencies": [
              5764,
              5933,
              6015,
              6027,
              6365,
              6392
            ],
            "contractKind": "interface",
            "documentation": {
              "id": 7948,
              "nodeType": "StructuredDocumentation",
              "src": "91:252:29",
              "text": " @dev EthItem token standard - Version 1\n This is a pure extension of the EthItem Token Standard, which also introduces an optional extension that can introduce some external behavior to the EthItem.\n Extension can also be a simple wallet"
            },
            "fullyImplemented": false,
            "id": 8061,
            "linearizedBaseContracts": [
              8061,
              6392,
              6365,
              5764,
              6015,
              5933,
              6027
            ],
            "name": "INativeV1",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "documentation": {
                  "id": 7951,
                  "nodeType": "StructuredDocumentation",
                  "src": "392:380:29",
                  "text": " @dev Contract initialization\n @param name the chosen name for this NFT\n @param symbol the chosen symbol (Ticker) for this NFT\n @param extensionAddress the optional address of the extension. It can be a Wallet or a SmartContract\n @param extensionInitPayload the optional payload useful to call the extension within the new created EthItem"
                },
                "functionSelector": "da1aafea",
                "id": 7968,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "init",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7964,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7953,
                      "mutability": "mutable",
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "scope": 7968,
                      "src": "791:20:29",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7952,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "791:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7955,
                      "mutability": "mutable",
                      "name": "symbol",
                      "nodeType": "VariableDeclaration",
                      "scope": 7968,
                      "src": "813:22:29",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7954,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "813:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7957,
                      "mutability": "mutable",
                      "name": "hasDecimals",
                      "nodeType": "VariableDeclaration",
                      "scope": 7968,
                      "src": "837:16:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7956,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "837:4:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7959,
                      "mutability": "mutable",
                      "name": "collectionUri",
                      "nodeType": "VariableDeclaration",
                      "scope": 7968,
                      "src": "855:29:29",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7958,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "855:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7961,
                      "mutability": "mutable",
                      "name": "extensionAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 7968,
                      "src": "886:24:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7960,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "886:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7963,
                      "mutability": "mutable",
                      "name": "extensionInitPayload",
                      "nodeType": "VariableDeclaration",
                      "scope": 7968,
                      "src": "912:35:29",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7962,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "912:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "790:158:29"
                },
                "returnParameters": {
                  "id": 7967,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7966,
                      "mutability": "mutable",
                      "name": "extensionInitCallResponse",
                      "nodeType": "VariableDeclaration",
                      "scope": 7968,
                      "src": "966:38:29",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7965,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "966:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "965:40:29"
                },
                "scope": 8061,
                "src": "777:229:29",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 7969,
                  "nodeType": "StructuredDocumentation",
                  "src": "1012:234:29",
                  "text": " @return extensionAddress the address of the eventual EthItem main owner or the SmartContract which contains all the logics to directly exploit all the Collection Items of this EthItem. It can also be a simple wallet"
                },
                "functionSelector": "2d5537b0",
                "id": 7974,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "extension",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7970,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1269:2:29"
                },
                "returnParameters": {
                  "id": 7973,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7972,
                      "mutability": "mutable",
                      "name": "extensionAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 7974,
                      "src": "1295:24:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7971,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1295:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1294:26:29"
                },
                "scope": 8061,
                "src": "1251:70:29",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 7975,
                  "nodeType": "StructuredDocumentation",
                  "src": "1327:158:29",
                  "text": " @param operator The address to know info about\n @return result true if the given address is able to mint new tokens, false otherwise."
                },
                "functionSelector": "c2ba4744",
                "id": 7982,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "canMint",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7978,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7977,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 7982,
                      "src": "1507:16:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7976,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1507:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1506:18:29"
                },
                "returnParameters": {
                  "id": 7981,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7980,
                      "mutability": "mutable",
                      "name": "result",
                      "nodeType": "VariableDeclaration",
                      "scope": 7982,
                      "src": "1548:11:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7979,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1548:4:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1547:13:29"
                },
                "scope": 8061,
                "src": "1490:71:29",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 7983,
                  "nodeType": "StructuredDocumentation",
                  "src": "1567:167:29",
                  "text": " @param objectId The item to know info about\n @return result true if it is possible to mint more items of the given objectId, false otherwhise."
                },
                "functionSelector": "e0519081",
                "id": 7990,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "isEditable",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7986,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7985,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7990,
                      "src": "1759:16:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7984,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1759:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1758:18:29"
                },
                "returnParameters": {
                  "id": 7989,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7988,
                      "mutability": "mutable",
                      "name": "result",
                      "nodeType": "VariableDeclaration",
                      "scope": 7990,
                      "src": "1800:11:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7987,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1800:4:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1799:13:29"
                },
                "scope": 8061,
                "src": "1739:74:29",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "documentation": {
                  "id": 7991,
                  "nodeType": "StructuredDocumentation",
                  "src": "1819:152:29",
                  "text": " @dev Method callable by the extension only and useful to release the control on the EthItem, which from now on will run independently"
                },
                "functionSelector": "e0ecbcea",
                "id": 7994,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "releaseExtension",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7992,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2001:2:29"
                },
                "returnParameters": {
                  "id": 7993,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2012:0:29"
                },
                "scope": 8061,
                "src": "1976:37:29",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "eac989f8",
                "id": 7999,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "uri",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 7995,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2031:2:29"
                },
                "returnParameters": {
                  "id": 7998,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7997,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 7999,
                      "src": "2057:13:29",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7996,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2057:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2056:15:29"
                },
                "scope": 8061,
                "src": "2019:53:29",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "313ce567",
                "id": 8004,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8000,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2095:2:29"
                },
                "returnParameters": {
                  "id": 8003,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8002,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8004,
                      "src": "2121:7:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8001,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2121:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2120:9:29"
                },
                "scope": 8061,
                "src": "2078:52:29",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "534d4027",
                "id": 8021,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8015,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8006,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 8021,
                      "src": "2150:14:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8005,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2150:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8008,
                      "mutability": "mutable",
                      "name": "tokenName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8021,
                      "src": "2166:25:29",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8007,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2166:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8010,
                      "mutability": "mutable",
                      "name": "tokenSymbol",
                      "nodeType": "VariableDeclaration",
                      "scope": 8021,
                      "src": "2193:27:29",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8009,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2193:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8012,
                      "mutability": "mutable",
                      "name": "objectUri",
                      "nodeType": "VariableDeclaration",
                      "scope": 8021,
                      "src": "2222:25:29",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8011,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2222:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8014,
                      "mutability": "mutable",
                      "name": "editable",
                      "nodeType": "VariableDeclaration",
                      "scope": 8021,
                      "src": "2249:13:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8013,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2249:4:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2149:114:29"
                },
                "returnParameters": {
                  "id": 8020,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8017,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 8021,
                      "src": "2282:16:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8016,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2282:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8019,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 8021,
                      "src": "2300:20:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8018,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2300:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2281:40:29"
                },
                "scope": 8061,
                "src": "2136:186:29",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "acdd1454",
                "id": 8036,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8030,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8023,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 8036,
                      "src": "2342:14:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8022,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2342:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8025,
                      "mutability": "mutable",
                      "name": "tokenName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8036,
                      "src": "2358:25:29",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8024,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2358:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8027,
                      "mutability": "mutable",
                      "name": "tokenSymbol",
                      "nodeType": "VariableDeclaration",
                      "scope": 8036,
                      "src": "2385:27:29",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8026,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2385:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8029,
                      "mutability": "mutable",
                      "name": "objectUri",
                      "nodeType": "VariableDeclaration",
                      "scope": 8036,
                      "src": "2414:25:29",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8028,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2414:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2341:99:29"
                },
                "returnParameters": {
                  "id": 8035,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8032,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 8036,
                      "src": "2459:16:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8031,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2459:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8034,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 8036,
                      "src": "2477:20:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8033,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2477:7:29",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2458:40:29"
                },
                "scope": 8061,
                "src": "2328:171:29",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "1b2ef1ca",
                "id": 8043,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8041,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8038,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 8043,
                      "src": "2519:16:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8037,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2519:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8040,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 8043,
                      "src": "2537:14:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8039,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2537:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2518:34:29"
                },
                "returnParameters": {
                  "id": 8042,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2561:0:29"
                },
                "scope": 8061,
                "src": "2505:57:29",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "e6492046",
                "id": 8048,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "makeReadOnly",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8046,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8045,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 8048,
                      "src": "2590:16:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8044,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2590:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2589:18:29"
                },
                "returnParameters": {
                  "id": 8047,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2616:0:29"
                },
                "scope": 8061,
                "src": "2568:49:29",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "9b642de1",
                "id": 8053,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setUri",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8051,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8050,
                      "mutability": "mutable",
                      "name": "newUri",
                      "nodeType": "VariableDeclaration",
                      "scope": 8053,
                      "src": "2639:22:29",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8049,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2639:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2638:24:29"
                },
                "returnParameters": {
                  "id": 8052,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2671:0:29"
                },
                "scope": 8061,
                "src": "2623:49:29",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "782f08ae",
                "id": 8060,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setUri",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8058,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8055,
                      "mutability": "mutable",
                      "name": "objectId",
                      "nodeType": "VariableDeclaration",
                      "scope": 8060,
                      "src": "2694:16:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8054,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2694:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8057,
                      "mutability": "mutable",
                      "name": "newUri",
                      "nodeType": "VariableDeclaration",
                      "scope": 8060,
                      "src": "2712:22:29",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8056,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2712:6:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2693:42:29"
                },
                "returnParameters": {
                  "id": 8059,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2744:0:29"
                },
                "scope": 8061,
                "src": "2678:67:29",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 8062,
            "src": "344:2403:29"
          }
        ],
        "src": "32:2715:29"
      }
    },
    "contracts/interfaces/IStateHolder.sol": {
      "id": 30,
      "AST": {
        "absolutePath": "contracts/interfaces/IStateHolder.sol",
        "exportedSymbols": {
          "IStateHolder": [
            8197
          ]
        },
        "id": 8198,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 8063,
            "literals": [
              "solidity",
              "=",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "34:23:30"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 8197,
            "linearizedBaseContracts": [
              8197
            ],
            "name": "IStateHolder",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "e1c7392a",
                "id": 8066,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "init",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8064,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "101:2:30"
                },
                "returnParameters": {
                  "id": 8065,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "112:0:30"
                },
                "scope": 8197,
                "src": "88:25:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "933a9ce8",
                "id": 8071,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8067,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "136:2:30"
                },
                "returnParameters": {
                  "id": 8070,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8069,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8071,
                      "src": "162:7:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8068,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "162:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "161:9:30"
                },
                "scope": 8197,
                "src": "119:52:30",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "3914a04f",
                "id": 8074,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setProxy",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8072,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "194:2:30"
                },
                "returnParameters": {
                  "id": 8073,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "205:0:30"
                },
                "scope": 8197,
                "src": "177:29:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "16375cb3",
                "id": 8079,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "toJSON",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8075,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "227:2:30"
                },
                "returnParameters": {
                  "id": 8078,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8077,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8079,
                      "src": "253:13:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8076,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "253:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "252:15:30"
                },
                "scope": 8197,
                "src": "212:56:30",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "0e1211ea",
                "id": 8088,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "toJSON",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8084,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8081,
                      "mutability": "mutable",
                      "name": "start",
                      "nodeType": "VariableDeclaration",
                      "scope": 8088,
                      "src": "290:13:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8080,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "290:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8083,
                      "mutability": "mutable",
                      "name": "l",
                      "nodeType": "VariableDeclaration",
                      "scope": 8088,
                      "src": "305:9:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8082,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "305:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "289:26:30"
                },
                "returnParameters": {
                  "id": 8087,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8086,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8088,
                      "src": "339:13:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8085,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "339:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "338:15:30"
                },
                "scope": 8197,
                "src": "274:80:30",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "b5b8df05",
                "id": 8093,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getStateSize",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8089,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "381:2:30"
                },
                "returnParameters": {
                  "id": 8092,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8091,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8093,
                      "src": "407:7:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8090,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "407:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "406:9:30"
                },
                "scope": 8197,
                "src": "360:56:30",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "261a323e",
                "id": 8100,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "exists",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8096,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8095,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8100,
                      "src": "438:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8094,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "438:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "437:25:30"
                },
                "returnParameters": {
                  "id": 8099,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8098,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8100,
                      "src": "486:4:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8097,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "486:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "485:6:30"
                },
                "scope": 8197,
                "src": "422:70:30",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "eaaf7a94",
                "id": 8107,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getDataType",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8103,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8102,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8107,
                      "src": "519:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8101,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "519:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "518:25:30"
                },
                "returnParameters": {
                  "id": 8106,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8105,
                      "mutability": "mutable",
                      "name": "dataType",
                      "nodeType": "VariableDeclaration",
                      "scope": 8107,
                      "src": "567:22:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8104,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "567:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "566:24:30"
                },
                "scope": 8197,
                "src": "498:93:30",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "16cf503e",
                "id": 8116,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "clear",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8110,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8109,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8116,
                      "src": "612:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8108,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "612:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "611:25:30"
                },
                "returnParameters": {
                  "id": 8115,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8112,
                      "mutability": "mutable",
                      "name": "oldDataType",
                      "nodeType": "VariableDeclaration",
                      "scope": 8116,
                      "src": "655:25:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8111,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "655:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8114,
                      "mutability": "mutable",
                      "name": "oldVal",
                      "nodeType": "VariableDeclaration",
                      "scope": 8116,
                      "src": "682:19:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8113,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "682:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "654:48:30"
                },
                "scope": 8197,
                "src": "597:106:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "68d8641a",
                "id": 8125,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setBytes",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8121,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8118,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8125,
                      "src": "727:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8117,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "727:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8120,
                      "mutability": "mutable",
                      "name": "val",
                      "nodeType": "VariableDeclaration",
                      "scope": 8125,
                      "src": "752:18:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8119,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "752:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "726:45:30"
                },
                "returnParameters": {
                  "id": 8124,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8123,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8125,
                      "src": "790:12:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8122,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "790:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "789:14:30"
                },
                "scope": 8197,
                "src": "709:95:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "d8de899d",
                "id": 8132,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getBytes",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8128,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8127,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8132,
                      "src": "828:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8126,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "828:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "827:25:30"
                },
                "returnParameters": {
                  "id": 8131,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8130,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8132,
                      "src": "876:12:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8129,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "876:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "875:14:30"
                },
                "scope": 8197,
                "src": "810:80:30",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "6e1a1336",
                "id": 8141,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setString",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8137,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8134,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8141,
                      "src": "915:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8133,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "915:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8136,
                      "mutability": "mutable",
                      "name": "val",
                      "nodeType": "VariableDeclaration",
                      "scope": 8141,
                      "src": "940:19:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8135,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "940:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "914:46:30"
                },
                "returnParameters": {
                  "id": 8140,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8139,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8141,
                      "src": "979:13:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8138,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "979:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "978:15:30"
                },
                "scope": 8197,
                "src": "896:98:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "9c981fcb",
                "id": 8148,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getString",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8144,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8143,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8148,
                      "src": "1019:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8142,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1019:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1018:25:30"
                },
                "returnParameters": {
                  "id": 8147,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8146,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8148,
                      "src": "1067:13:30",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8145,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1067:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1066:15:30"
                },
                "scope": 8197,
                "src": "1000:82:30",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "b8b2bdad",
                "id": 8157,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setBool",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8153,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8150,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8157,
                      "src": "1105:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8149,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1105:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8152,
                      "mutability": "mutable",
                      "name": "val",
                      "nodeType": "VariableDeclaration",
                      "scope": 8157,
                      "src": "1130:8:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8151,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1130:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1104:35:30"
                },
                "returnParameters": {
                  "id": 8156,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8155,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8157,
                      "src": "1158:4:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8154,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1158:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1157:6:30"
                },
                "scope": 8197,
                "src": "1088:76:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "9535ce12",
                "id": 8164,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getBool",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8160,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8159,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8164,
                      "src": "1187:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8158,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1187:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1186:25:30"
                },
                "returnParameters": {
                  "id": 8163,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8162,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8164,
                      "src": "1235:4:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8161,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1235:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1234:6:30"
                },
                "scope": 8197,
                "src": "1170:71:30",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "0bb687e3",
                "id": 8171,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getUint256",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8167,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8166,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8171,
                      "src": "1267:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8165,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1267:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1266:25:30"
                },
                "returnParameters": {
                  "id": 8170,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8169,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8171,
                      "src": "1315:7:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8168,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1315:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1314:9:30"
                },
                "scope": 8197,
                "src": "1247:77:30",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "825de8af",
                "id": 8180,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setUint256",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8176,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8173,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8180,
                      "src": "1350:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8172,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1350:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8175,
                      "mutability": "mutable",
                      "name": "val",
                      "nodeType": "VariableDeclaration",
                      "scope": 8180,
                      "src": "1375:11:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8174,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1375:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1349:38:30"
                },
                "returnParameters": {
                  "id": 8179,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8178,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8180,
                      "src": "1406:7:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8177,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1406:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1405:9:30"
                },
                "scope": 8197,
                "src": "1330:85:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "bf40fac1",
                "id": 8187,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getAddress",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8183,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8182,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8187,
                      "src": "1441:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8181,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1441:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1440:25:30"
                },
                "returnParameters": {
                  "id": 8186,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8185,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8187,
                      "src": "1489:7:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8184,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1489:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1488:9:30"
                },
                "scope": 8197,
                "src": "1421:77:30",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "9b2ea4bd",
                "id": 8196,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setAddress",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8192,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8189,
                      "mutability": "mutable",
                      "name": "varName",
                      "nodeType": "VariableDeclaration",
                      "scope": 8196,
                      "src": "1524:23:30",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 8188,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1524:6:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8191,
                      "mutability": "mutable",
                      "name": "val",
                      "nodeType": "VariableDeclaration",
                      "scope": 8196,
                      "src": "1549:11:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8190,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1549:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1523:38:30"
                },
                "returnParameters": {
                  "id": 8195,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8194,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8196,
                      "src": "1580:7:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8193,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1580:7:30",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1579:9:30"
                },
                "scope": 8197,
                "src": "1504:85:30",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 8198,
            "src": "59:1532:30"
          }
        ],
        "src": "34:1558:30"
      }
    },
    "contracts/interfaces/IWETH.sol": {
      "id": 31,
      "AST": {
        "absolutePath": "contracts/interfaces/IWETH.sol",
        "exportedSymbols": {
          "IWETH": [
            8217
          ]
        },
        "id": 8218,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 8199,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "34:24:31"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "fullyImplemented": false,
            "id": 8217,
            "linearizedBaseContracts": [
              8217
            ],
            "name": "IWETH",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "functionSelector": "d0e30db0",
                "id": 8202,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "deposit",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8200,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "98:2:31"
                },
                "returnParameters": {
                  "id": 8201,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "117:0:31"
                },
                "scope": 8217,
                "src": "82:36:31",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "a9059cbb",
                "id": 8211,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8207,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8204,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 8211,
                      "src": "142:10:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8203,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "142:7:31",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8206,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 8211,
                      "src": "154:13:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8205,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "154:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "141:27:31"
                },
                "returnParameters": {
                  "id": 8210,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8209,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8211,
                      "src": "187:4:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8208,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "187:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "186:6:31"
                },
                "scope": 8217,
                "src": "124:69:31",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "functionSelector": "2e1a7d4d",
                "id": 8216,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "withdraw",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8214,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8213,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 8216,
                      "src": "217:7:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8212,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "217:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "216:9:31"
                },
                "returnParameters": {
                  "id": 8215,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "234:0:31"
                },
                "scope": 8217,
                "src": "199:36:31",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 8218,
            "src": "60:177:31"
          }
        ],
        "src": "34:204:31"
      }
    },
    "contracts/libraries/MateriaLibrary.sol": {
      "id": 32,
      "AST": {
        "absolutePath": "contracts/libraries/MateriaLibrary.sol",
        "exportedSymbols": {
          "IMateriaFactory": [
            7180
          ],
          "IMateriaPair": [
            7944
          ],
          "MateriaLibrary": [
            8693
          ],
          "SafeMath": [
            9314
          ]
        },
        "id": 8694,
        "license": "GPL3",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 8219,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "34:24:32"
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaPair.sol",
            "file": "../interfaces/IMateriaPair.sol",
            "id": 8220,
            "nodeType": "ImportDirective",
            "scope": 8694,
            "sourceUnit": 7945,
            "src": "60:40:32",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaFactory.sol",
            "file": "../interfaces/IMateriaFactory.sol",
            "id": 8221,
            "nodeType": "ImportDirective",
            "scope": 8694,
            "sourceUnit": 7181,
            "src": "101:43:32",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "./SafeMath.sol",
            "id": 8222,
            "nodeType": "ImportDirective",
            "scope": 8694,
            "sourceUnit": 9315,
            "src": "146:24:32",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "fullyImplemented": true,
            "id": 8693,
            "linearizedBaseContracts": [
              8693
            ],
            "name": "MateriaLibrary",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 8225,
                "libraryName": {
                  "id": 8223,
                  "name": "SafeMath",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9314,
                  "src": "207:8:32"
                },
                "nodeType": "UsingForDirective",
                "src": "201:27:32",
                "typeName": {
                  "id": 8224,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "220:7:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "body": {
                  "id": 8268,
                  "nodeType": "Block",
                  "src": "441:234:32",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 8239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8237,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8227,
                              "src": "459:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "id": 8238,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8229,
                              "src": "469:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "459:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4d6174657269614c6962726172793a204944454e544943414c5f414444524553534553",
                            "id": 8240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "477:37:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_930618f9b3123953cd003555a0a2e4f1e9a7a283ca05f0809f865558a2d5b556",
                              "typeString": "literal_string \"MateriaLibrary: IDENTICAL_ADDRESSES\""
                            },
                            "value": "MateriaLibrary: IDENTICAL_ADDRESSES"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_930618f9b3123953cd003555a0a2e4f1e9a7a283ca05f0809f865558a2d5b556",
                              "typeString": "literal_string \"MateriaLibrary: IDENTICAL_ADDRESSES\""
                            }
                          ],
                          "id": 8236,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "451:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "451:64:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8242,
                      "nodeType": "ExpressionStatement",
                      "src": "451:64:32"
                    },
                    {
                      "expression": {
                        "id": 8256,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 8243,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8232,
                              "src": "526:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8244,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8234,
                              "src": "534:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "id": 8245,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "525:16:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 8248,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8246,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8227,
                              "src": "544:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "id": 8247,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8229,
                              "src": "553:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "544:15:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "components": [
                              {
                                "id": 8252,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8229,
                                "src": "582:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 8253,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8227,
                                "src": "590:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "id": 8254,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "581:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "id": 8255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "544:53:32",
                          "trueExpression": {
                            "components": [
                              {
                                "id": 8249,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8227,
                                "src": "563:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 8250,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8229,
                                "src": "571:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "id": 8251,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "562:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "src": "525:72:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8257,
                      "nodeType": "ExpressionStatement",
                      "src": "525:72:32"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 8264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8259,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8232,
                              "src": "615:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 8262,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "633:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 8261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "625:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 8260,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "625:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "625:10:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "615:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4d6174657269614c6962726172793a205a45524f5f41444452455353",
                            "id": 8265,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "637:30:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f2852d2a4b7502adb4c7e03434b5db8b0886989fdbd61f52e46626606b89c548",
                              "typeString": "literal_string \"MateriaLibrary: ZERO_ADDRESS\""
                            },
                            "value": "MateriaLibrary: ZERO_ADDRESS"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f2852d2a4b7502adb4c7e03434b5db8b0886989fdbd61f52e46626606b89c548",
                              "typeString": "literal_string \"MateriaLibrary: ZERO_ADDRESS\""
                            }
                          ],
                          "id": 8258,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "607:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8266,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "607:61:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8267,
                      "nodeType": "ExpressionStatement",
                      "src": "607:61:32"
                    }
                  ]
                },
                "id": 8269,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sortTokens",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8230,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8227,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 8269,
                      "src": "354:14:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8226,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "354:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8229,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8269,
                      "src": "370:14:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8228,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "370:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "353:32:32"
                },
                "returnParameters": {
                  "id": 8235,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8232,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "scope": 8269,
                      "src": "409:14:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8231,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "409:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8234,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "scope": 8269,
                      "src": "425:14:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8233,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "425:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "408:32:32"
                },
                "scope": 8693,
                "src": "334:341:32",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8316,
                  "nodeType": "Block",
                  "src": "897:575:32",
                  "statements": [
                    {
                      "assignments": [
                        8281,
                        8283
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8281,
                          "mutability": "mutable",
                          "name": "token0",
                          "nodeType": "VariableDeclaration",
                          "scope": 8316,
                          "src": "908:14:32",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 8280,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "908:7:32",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 8283,
                          "mutability": "mutable",
                          "name": "token1",
                          "nodeType": "VariableDeclaration",
                          "scope": 8316,
                          "src": "924:14:32",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 8282,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "924:7:32",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 8288,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 8285,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8273,
                            "src": "953:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 8286,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8275,
                            "src": "961:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8284,
                          "name": "sortTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8269,
                          "src": "942:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                            "typeString": "function (address,address) pure returns (address,address)"
                          }
                        },
                        "id": 8287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "942:26:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                          "typeString": "tuple(address,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "907:61:32"
                    },
                    {
                      "expression": {
                        "id": 8314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 8289,
                          "name": "pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8278,
                          "src": "978:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "hexValue": "ff",
                                              "id": 8299,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "hexString",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1141:7:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9",
                                                "typeString": "literal_string hex\"ff\""
                                              }
                                            },
                                            {
                                              "id": 8300,
                                              "name": "factory",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8271,
                                              "src": "1178:7:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "id": 8304,
                                                      "name": "token0",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 8281,
                                                      "src": "1242:6:32",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    },
                                                    {
                                                      "id": 8305,
                                                      "name": "token1",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 8283,
                                                      "src": "1250:6:32",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "id": 8302,
                                                      "name": "abi",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4294967295,
                                                      "src": "1225:3:32",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_abi",
                                                        "typeString": "abi"
                                                      }
                                                    },
                                                    "id": 8303,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "encodePacked",
                                                    "nodeType": "MemberAccess",
                                                    "src": "1225:16:32",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                      "typeString": "function () pure returns (bytes memory)"
                                                    }
                                                  },
                                                  "id": 8306,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "1225:32:32",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                ],
                                                "id": 8301,
                                                "name": "keccak256",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967288,
                                                "src": "1215:9:32",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                                }
                                              },
                                              "id": 8307,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "1215:43:32",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "hexValue": "1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94",
                                              "id": 8308,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "hexString",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1288:69:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_ed355d809f42af878b95035e0c5bbfb8b6458c008c42fff958db35d86b063856",
                                                "typeString": "literal_string hex\"1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94\""
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9",
                                                "typeString": "literal_string hex\"ff\""
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_stringliteral_ed355d809f42af878b95035e0c5bbfb8b6458c008c42fff958db35d86b063856",
                                                "typeString": "literal_string hex\"1974917c1e01e6369c1b45f631eae6a71d24cb5108c460cc7f0b1c608b3a7c94\""
                                              }
                                            ],
                                            "expression": {
                                              "id": 8297,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4294967295,
                                              "src": "1095:3:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 8298,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encodePacked",
                                            "nodeType": "MemberAccess",
                                            "src": "1095:16:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 8309,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1095:306:32",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 8296,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967288,
                                        "src": "1060:9:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 8310,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1060:363:32",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 8295,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1031:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 8294,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1031:7:32",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 8311,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1031:410:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 8293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1006:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 8292,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1006:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1006:449:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 8291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "985:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 8290,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "985:7:32",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "985:480:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "978:487:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 8315,
                      "nodeType": "ExpressionStatement",
                      "src": "978:487:32"
                    }
                  ]
                },
                "id": 8317,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "pairFor",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8276,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8271,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "scope": 8317,
                      "src": "790:15:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8270,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "790:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8273,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 8317,
                      "src": "815:14:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8272,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "815:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8275,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8317,
                      "src": "839:14:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8274,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "839:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "780:79:32"
                },
                "returnParameters": {
                  "id": 8279,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8278,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "scope": 8317,
                      "src": "883:12:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8277,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "883:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "882:14:32"
                },
                "scope": 8693,
                "src": "764:708:32",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8366,
                  "nodeType": "Block",
                  "src": "1686:270:32",
                  "statements": [
                    {
                      "assignments": [
                        8331,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8331,
                          "mutability": "mutable",
                          "name": "token0",
                          "nodeType": "VariableDeclaration",
                          "scope": 8366,
                          "src": "1697:14:32",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 8330,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1697:7:32",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 8336,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 8333,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8321,
                            "src": "1728:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 8334,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8323,
                            "src": "1736:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8332,
                          "name": "sortTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8269,
                          "src": "1717:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                            "typeString": "function (address,address) pure returns (address,address)"
                          }
                        },
                        "id": 8335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1717:26:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                          "typeString": "tuple(address,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1696:47:32"
                    },
                    {
                      "assignments": [
                        8338,
                        8340,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8338,
                          "mutability": "mutable",
                          "name": "reserve0",
                          "nodeType": "VariableDeclaration",
                          "scope": 8366,
                          "src": "1754:16:32",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8337,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1754:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 8340,
                          "mutability": "mutable",
                          "name": "reserve1",
                          "nodeType": "VariableDeclaration",
                          "scope": 8366,
                          "src": "1772:16:32",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8339,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1772:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 8350,
                      "initialValue": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 8343,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8319,
                                    "src": "1815:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8344,
                                    "name": "tokenA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8321,
                                    "src": "1824:6:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8345,
                                    "name": "tokenB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8323,
                                    "src": "1832:6:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 8342,
                                  "name": "pairFor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8317,
                                  "src": "1807:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 8346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1807:32:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 8341,
                              "name": "IMateriaPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7944,
                              "src": "1794:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                                "typeString": "type(contract IMateriaPair)"
                              }
                            },
                            "id": 8347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1794:46:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                              "typeString": "contract IMateriaPair"
                            }
                          },
                          "id": 8348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7849,
                          "src": "1794:58:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "function () view external returns (uint112,uint112,uint32)"
                          }
                        },
                        "id": 8349,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1794:60:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                          "typeString": "tuple(uint112,uint112,uint32)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1753:101:32"
                    },
                    {
                      "expression": {
                        "id": 8364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 8351,
                              "name": "reserveA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8326,
                              "src": "1865:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8352,
                              "name": "reserveB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8328,
                              "src": "1875:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 8353,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "1864:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 8356,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8354,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8321,
                              "src": "1887:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 8355,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8331,
                              "src": "1897:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1887:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "components": [
                              {
                                "id": 8360,
                                "name": "reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8340,
                                "src": "1930:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8361,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8338,
                                "src": "1940:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8362,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1929:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "id": 8363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "1887:62:32",
                          "trueExpression": {
                            "components": [
                              {
                                "id": 8357,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8338,
                                "src": "1907:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8358,
                                "name": "reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8340,
                                "src": "1917:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8359,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1906:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "1864:85:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8365,
                      "nodeType": "ExpressionStatement",
                      "src": "1864:85:32"
                    }
                  ]
                },
                "id": 8367,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getReserves",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8324,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8319,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "scope": 8367,
                      "src": "1557:15:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8318,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1557:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8321,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 8367,
                      "src": "1582:14:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8320,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1582:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8323,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8367,
                      "src": "1606:14:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8322,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1606:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1547:79:32"
                },
                "returnParameters": {
                  "id": 8329,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8326,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "scope": 8367,
                      "src": "1650:16:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8325,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1650:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8328,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8367,
                      "src": "1668:16:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8327,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1668:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1649:36:32"
                },
                "scope": 8693,
                "src": "1527:429:32",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8405,
                  "nodeType": "Block",
                  "src": "2204:217:32",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8379,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8369,
                              "src": "2222:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 8380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2232:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2222:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4d6174657269614c6962726172793a20494e53554646494349454e545f414d4f554e54",
                            "id": 8382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2235:37:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_733bf1b81dfbbfb9d756c926418293c97920fc34447a57a2825e7e343c87c3ec",
                              "typeString": "literal_string \"MateriaLibrary: INSUFFICIENT_AMOUNT\""
                            },
                            "value": "MateriaLibrary: INSUFFICIENT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_733bf1b81dfbbfb9d756c926418293c97920fc34447a57a2825e7e343c87c3ec",
                              "typeString": "literal_string \"MateriaLibrary: INSUFFICIENT_AMOUNT\""
                            }
                          ],
                          "id": 8378,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "2214:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2214:59:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8384,
                      "nodeType": "ExpressionStatement",
                      "src": "2214:59:32"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 8392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8386,
                                "name": "reserveA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8371,
                                "src": "2291:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2302:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2291:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8389,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8373,
                                "src": "2307:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2318:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2307:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2291:28:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4d6174657269614c6962726172793a20494e53554646494349454e545f4c4951554944495459",
                            "id": 8393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2321:40:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d4a1d6db849b17e145d7af6f708473842add4fb7717198ce2b84a18bb6b33007",
                              "typeString": "literal_string \"MateriaLibrary: INSUFFICIENT_LIQUIDITY\""
                            },
                            "value": "MateriaLibrary: INSUFFICIENT_LIQUIDITY"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d4a1d6db849b17e145d7af6f708473842add4fb7717198ce2b84a18bb6b33007",
                              "typeString": "literal_string \"MateriaLibrary: INSUFFICIENT_LIQUIDITY\""
                            }
                          ],
                          "id": 8385,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "2283:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8394,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2283:79:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8395,
                      "nodeType": "ExpressionStatement",
                      "src": "2283:79:32"
                    },
                    {
                      "expression": {
                        "id": 8403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 8396,
                          "name": "amountB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8376,
                          "src": "2372:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 8399,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8373,
                                "src": "2394:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 8397,
                                "name": "amountA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8369,
                                "src": "2382:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9313,
                              "src": "2382:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2382:21:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 8401,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8371,
                            "src": "2406:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2382:32:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2372:42:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8404,
                      "nodeType": "ExpressionStatement",
                      "src": "2372:42:32"
                    }
                  ]
                },
                "id": 8406,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "quote",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8374,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8369,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "scope": 8406,
                      "src": "2090:15:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8368,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2090:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8371,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "scope": 8406,
                      "src": "2115:16:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8370,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2115:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8373,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8406,
                      "src": "2141:16:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8372,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2141:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2080:83:32"
                },
                "returnParameters": {
                  "id": 8377,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8376,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8406,
                      "src": "2187:15:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8375,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2187:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2186:17:32"
                },
                "scope": 8693,
                "src": "2066:355:32",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8465,
                  "nodeType": "Block",
                  "src": "2691:406:32",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8420,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8418,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8408,
                              "src": "2709:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 8419,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2720:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2709:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4d6174657269614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54",
                            "id": 8421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2723:43:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8a808af737082976a3e8d7ab7c6e6d4cdddcc0a3672b56bf373ba185c560b702",
                              "typeString": "literal_string \"MateriaLibrary: INSUFFICIENT_INPUT_AMOUNT\""
                            },
                            "value": "MateriaLibrary: INSUFFICIENT_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_8a808af737082976a3e8d7ab7c6e6d4cdddcc0a3672b56bf373ba185c560b702",
                              "typeString": "literal_string \"MateriaLibrary: INSUFFICIENT_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 8417,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "2701:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2701:66:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8423,
                      "nodeType": "ExpressionStatement",
                      "src": "2701:66:32"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 8431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8425,
                                "name": "reserveIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8410,
                                "src": "2785:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2797:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2785:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8428,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8412,
                                "src": "2802:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2815:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2802:14:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2785:31:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4d6174657269614c6962726172793a20494e53554646494349454e545f4c4951554944495459",
                            "id": 8432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2818:40:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d4a1d6db849b17e145d7af6f708473842add4fb7717198ce2b84a18bb6b33007",
                              "typeString": "literal_string \"MateriaLibrary: INSUFFICIENT_LIQUIDITY\""
                            },
                            "value": "MateriaLibrary: INSUFFICIENT_LIQUIDITY"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d4a1d6db849b17e145d7af6f708473842add4fb7717198ce2b84a18bb6b33007",
                              "typeString": "literal_string \"MateriaLibrary: INSUFFICIENT_LIQUIDITY\""
                            }
                          ],
                          "id": 8424,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "2777:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8433,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2777:82:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8434,
                      "nodeType": "ExpressionStatement",
                      "src": "2777:82:32"
                    },
                    {
                      "assignments": [
                        8436
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8436,
                          "mutability": "mutable",
                          "name": "amountInWithFee",
                          "nodeType": "VariableDeclaration",
                          "scope": 8465,
                          "src": "2869:23:32",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8435,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2869:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 8441,
                      "initialValue": {
                        "arguments": [
                          {
                            "hexValue": "393937",
                            "id": 8439,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2908:3:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            },
                            "value": "997"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            }
                          ],
                          "expression": {
                            "id": 8437,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8408,
                            "src": "2895:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9313,
                          "src": "2895:12:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2895:17:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2869:43:32"
                    },
                    {
                      "assignments": [
                        8443
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8443,
                          "mutability": "mutable",
                          "name": "numerator",
                          "nodeType": "VariableDeclaration",
                          "scope": 8465,
                          "src": "2922:17:32",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8442,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2922:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 8448,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 8446,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8412,
                            "src": "2962:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 8444,
                            "name": "amountInWithFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8436,
                            "src": "2942:15:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9313,
                          "src": "2942:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2942:31:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2922:51:32"
                    },
                    {
                      "assignments": [
                        8450
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8450,
                          "mutability": "mutable",
                          "name": "denominator",
                          "nodeType": "VariableDeclaration",
                          "scope": 8465,
                          "src": "2983:19:32",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8449,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2983:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 8458,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 8456,
                            "name": "amountInWithFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8436,
                            "src": "3029:15:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "hexValue": "31303030",
                                "id": 8453,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3019:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                }
                              ],
                              "expression": {
                                "id": 8451,
                                "name": "reserveIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8410,
                                "src": "3005:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9313,
                              "src": "3005:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3005:19:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9263,
                          "src": "3005:23:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8457,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3005:40:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2983:62:32"
                    },
                    {
                      "expression": {
                        "id": 8463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 8459,
                          "name": "amountOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8415,
                          "src": "3055:9:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8460,
                            "name": "numerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8443,
                            "src": "3067:9:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 8461,
                            "name": "denominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8450,
                            "src": "3079:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3067:23:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3055:35:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8464,
                      "nodeType": "ExpressionStatement",
                      "src": "3055:35:32"
                    }
                  ]
                },
                "id": 8466,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountOut",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8413,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8408,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 8466,
                      "src": "2571:16:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8407,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2571:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8410,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 8466,
                      "src": "2597:17:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8409,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2597:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8412,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 8466,
                      "src": "2624:18:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8411,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2624:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2561:87:32"
                },
                "returnParameters": {
                  "id": 8416,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8415,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 8466,
                      "src": "2672:17:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8414,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2672:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2671:19:32"
                },
                "scope": 8693,
                "src": "2540:557:32",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8525,
                  "nodeType": "Block",
                  "src": "3365:360:32",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8478,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8468,
                              "src": "3383:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 8479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3395:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3383:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4d6174657269614c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 8481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3398:44:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_78f6fa6c602083ef37afe4d6a056459937fd329cd0bf450ea6729ee192baef27",
                              "typeString": "literal_string \"MateriaLibrary: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "MateriaLibrary: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_78f6fa6c602083ef37afe4d6a056459937fd329cd0bf450ea6729ee192baef27",
                              "typeString": "literal_string \"MateriaLibrary: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 8477,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "3375:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3375:68:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8483,
                      "nodeType": "ExpressionStatement",
                      "src": "3375:68:32"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 8491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8485,
                                "name": "reserveIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8470,
                                "src": "3461:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3473:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3461:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8488,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8472,
                                "src": "3478:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8489,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3491:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3478:14:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "3461:31:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4d6174657269614c6962726172793a20494e53554646494349454e545f4c4951554944495459",
                            "id": 8492,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3494:40:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d4a1d6db849b17e145d7af6f708473842add4fb7717198ce2b84a18bb6b33007",
                              "typeString": "literal_string \"MateriaLibrary: INSUFFICIENT_LIQUIDITY\""
                            },
                            "value": "MateriaLibrary: INSUFFICIENT_LIQUIDITY"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d4a1d6db849b17e145d7af6f708473842add4fb7717198ce2b84a18bb6b33007",
                              "typeString": "literal_string \"MateriaLibrary: INSUFFICIENT_LIQUIDITY\""
                            }
                          ],
                          "id": 8484,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "3453:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3453:82:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8494,
                      "nodeType": "ExpressionStatement",
                      "src": "3453:82:32"
                    },
                    {
                      "assignments": [
                        8496
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8496,
                          "mutability": "mutable",
                          "name": "numerator",
                          "nodeType": "VariableDeclaration",
                          "scope": 8525,
                          "src": "3545:17:32",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8495,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3545:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 8504,
                      "initialValue": {
                        "arguments": [
                          {
                            "hexValue": "31303030",
                            "id": 8502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3594:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000_by_1",
                              "typeString": "int_const 1000"
                            },
                            "value": "1000"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1000_by_1",
                              "typeString": "int_const 1000"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 8499,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8468,
                                "src": "3579:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 8497,
                                "name": "reserveIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8470,
                                "src": "3565:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9313,
                              "src": "3565:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8500,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3565:24:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9313,
                          "src": "3565:28:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3565:34:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3545:54:32"
                    },
                    {
                      "assignments": [
                        8506
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8506,
                          "mutability": "mutable",
                          "name": "denominator",
                          "nodeType": "VariableDeclaration",
                          "scope": 8525,
                          "src": "3609:19:32",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8505,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3609:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 8514,
                      "initialValue": {
                        "arguments": [
                          {
                            "hexValue": "393937",
                            "id": 8512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3661:3:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            },
                            "value": "997"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 8509,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8468,
                                "src": "3646:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 8507,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8472,
                                "src": "3631:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9285,
                              "src": "3631:14:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8510,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3631:25:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9313,
                          "src": "3631:29:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3631:34:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3609:56:32"
                    },
                    {
                      "expression": {
                        "id": 8523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 8515,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8475,
                          "src": "3675:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "hexValue": "31",
                              "id": 8521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3716:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "expression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8518,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8516,
                                    "name": "numerator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8496,
                                    "src": "3687:9:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 8517,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8506,
                                    "src": "3699:11:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3687:23:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 8519,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3686:25:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8520,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9263,
                            "src": "3686:29:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3686:32:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3675:43:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8524,
                      "nodeType": "ExpressionStatement",
                      "src": "3675:43:32"
                    }
                  ]
                },
                "id": 8526,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountIn",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8473,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8468,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 8526,
                      "src": "3245:17:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8467,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3245:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8470,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 8526,
                      "src": "3272:17:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8469,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3272:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8472,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 8526,
                      "src": "3299:18:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8471,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3299:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3235:88:32"
                },
                "returnParameters": {
                  "id": 8476,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8475,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 8526,
                      "src": "3347:16:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8474,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3347:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3346:18:32"
                },
                "scope": 8693,
                "src": "3215:510:32",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8606,
                  "nodeType": "Block",
                  "src": "3964:389:32",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 8540,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8533,
                                "src": "3982:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 8541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "3982:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 8542,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3997:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "3982:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4d6174657269614c6962726172793a20494e56414c49445f50415448",
                            "id": 8544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4000:30:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8393831d4a4739c1167b684991bc90256c8581fcb2866fb195cbea4ca8c33cce",
                              "typeString": "literal_string \"MateriaLibrary: INVALID_PATH\""
                            },
                            "value": "MateriaLibrary: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_8393831d4a4739c1167b684991bc90256c8581fcb2866fb195cbea4ca8c33cce",
                              "typeString": "literal_string \"MateriaLibrary: INVALID_PATH\""
                            }
                          ],
                          "id": 8539,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "3974:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3974:57:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8546,
                      "nodeType": "ExpressionStatement",
                      "src": "3974:57:32"
                    },
                    {
                      "expression": {
                        "id": 8554,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 8547,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8537,
                          "src": "4041:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 8551,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8533,
                                "src": "4065:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 8552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4065:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4051:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 8548,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4055:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8549,
                              "nodeType": "ArrayTypeName",
                              "src": "4055:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 8553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4051:26:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "4041:36:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 8555,
                      "nodeType": "ExpressionStatement",
                      "src": "4041:36:32"
                    },
                    {
                      "expression": {
                        "id": 8560,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 8556,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8537,
                            "src": "4087:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 8558,
                          "indexExpression": {
                            "hexValue": "30",
                            "id": 8557,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4095:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "4087:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 8559,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8530,
                          "src": "4100:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4087:21:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8561,
                      "nodeType": "ExpressionStatement",
                      "src": "4087:21:32"
                    },
                    {
                      "body": {
                        "id": 8604,
                        "nodeType": "Block",
                        "src": "4160:187:32",
                        "statements": [
                          {
                            "assignments": [
                              8575,
                              8577
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 8575,
                                "mutability": "mutable",
                                "name": "reserveIn",
                                "nodeType": "VariableDeclaration",
                                "scope": 8604,
                                "src": "4175:17:32",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 8574,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4175:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 8577,
                                "mutability": "mutable",
                                "name": "reserveOut",
                                "nodeType": "VariableDeclaration",
                                "scope": 8604,
                                "src": "4194:18:32",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 8576,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4194:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 8589,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 8579,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8528,
                                  "src": "4228:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 8580,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8533,
                                    "src": "4237:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 8582,
                                  "indexExpression": {
                                    "id": 8581,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8563,
                                    "src": "4242:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4237:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 8583,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8533,
                                    "src": "4246:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 8587,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8586,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8584,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8563,
                                      "src": "4251:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 8585,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4255:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "4251:5:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4246:11:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8578,
                                "name": "getReserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8367,
                                "src": "4216:11:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (address,address,address) view returns (uint256,uint256)"
                                }
                              },
                              "id": 8588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4216:42:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4174:84:32"
                          },
                          {
                            "expression": {
                              "id": 8602,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 8590,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8537,
                                  "src": "4272:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 8594,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8593,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8591,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8563,
                                    "src": "4280:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 8592,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4284:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "4280:5:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "4272:14:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 8596,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8537,
                                      "src": "4302:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 8598,
                                    "indexExpression": {
                                      "id": 8597,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8563,
                                      "src": "4310:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4302:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8599,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8575,
                                    "src": "4314:9:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8600,
                                    "name": "reserveOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8577,
                                    "src": "4325:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8595,
                                  "name": "getAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8466,
                                  "src": "4289:12:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 8601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4289:47:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4272:64:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8603,
                            "nodeType": "ExpressionStatement",
                            "src": "4272:64:32"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8570,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 8565,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8563,
                          "src": "4134:1:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 8566,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8533,
                              "src": "4138:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 8567,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4138:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 8568,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4152:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4138:15:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4134:19:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 8605,
                      "initializationExpression": {
                        "assignments": [
                          8563
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8563,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "scope": 8605,
                            "src": "4123:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8562,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4123:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8564,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4123:9:32"
                      },
                      "loopExpression": {
                        "expression": {
                          "id": 8572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "4155:3:32",
                          "subExpression": {
                            "id": 8571,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8563,
                            "src": "4155:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8573,
                        "nodeType": "ExpressionStatement",
                        "src": "4155:3:32"
                      },
                      "nodeType": "ForStatement",
                      "src": "4118:229:32"
                    }
                  ]
                },
                "id": 8607,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsOut",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8534,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8528,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "scope": 8607,
                      "src": "3836:15:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8527,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3836:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8530,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 8607,
                      "src": "3861:16:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8529,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3861:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8533,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 8607,
                      "src": "3887:21:32",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8531,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3887:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8532,
                        "nodeType": "ArrayTypeName",
                        "src": "3887:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3826:88:32"
                },
                "returnParameters": {
                  "id": 8538,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8537,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 8607,
                      "src": "3938:24:32",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8535,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3938:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8536,
                        "nodeType": "ArrayTypeName",
                        "src": "3938:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3937:26:32"
                },
                "scope": 8693,
                "src": "3804:549:32",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8691,
                  "nodeType": "Block",
                  "src": "4591:410:32",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 8621,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8614,
                                "src": "4609:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 8622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4609:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 8623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4624:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "4609:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4d6174657269614c6962726172793a20494e56414c49445f50415448",
                            "id": 8625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4627:30:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8393831d4a4739c1167b684991bc90256c8581fcb2866fb195cbea4ca8c33cce",
                              "typeString": "literal_string \"MateriaLibrary: INVALID_PATH\""
                            },
                            "value": "MateriaLibrary: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_8393831d4a4739c1167b684991bc90256c8581fcb2866fb195cbea4ca8c33cce",
                              "typeString": "literal_string \"MateriaLibrary: INVALID_PATH\""
                            }
                          ],
                          "id": 8620,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "4601:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4601:57:32",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8627,
                      "nodeType": "ExpressionStatement",
                      "src": "4601:57:32"
                    },
                    {
                      "expression": {
                        "id": 8635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 8628,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8618,
                          "src": "4668:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 8632,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8614,
                                "src": "4692:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 8633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4692:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4678:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 8629,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4682:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8630,
                              "nodeType": "ArrayTypeName",
                              "src": "4682:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 8634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4678:26:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "4668:36:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 8636,
                      "nodeType": "ExpressionStatement",
                      "src": "4668:36:32"
                    },
                    {
                      "expression": {
                        "id": 8644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 8637,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8618,
                            "src": "4714:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 8642,
                          "indexExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 8638,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8618,
                                "src": "4722:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 8639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4722:14:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 8640,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4739:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "4722:18:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "4714:27:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 8643,
                          "name": "amountOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8611,
                          "src": "4744:9:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4714:39:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8645,
                      "nodeType": "ExpressionStatement",
                      "src": "4714:39:32"
                    },
                    {
                      "body": {
                        "id": 8689,
                        "nodeType": "Block",
                        "src": "4809:186:32",
                        "statements": [
                          {
                            "assignments": [
                              8660,
                              8662
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 8660,
                                "mutability": "mutable",
                                "name": "reserveIn",
                                "nodeType": "VariableDeclaration",
                                "scope": 8689,
                                "src": "4824:17:32",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 8659,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4824:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 8662,
                                "mutability": "mutable",
                                "name": "reserveOut",
                                "nodeType": "VariableDeclaration",
                                "scope": 8689,
                                "src": "4843:18:32",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 8661,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4843:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 8674,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 8664,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8609,
                                  "src": "4877:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 8665,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8614,
                                    "src": "4886:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 8669,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8668,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8666,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8647,
                                      "src": "4891:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 8667,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4895:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "4891:5:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4886:11:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 8670,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8614,
                                    "src": "4899:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 8672,
                                  "indexExpression": {
                                    "id": 8671,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8647,
                                    "src": "4904:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4899:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8663,
                                "name": "getReserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8367,
                                "src": "4865:11:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (address,address,address) view returns (uint256,uint256)"
                                }
                              },
                              "id": 8673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4865:42:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4823:84:32"
                          },
                          {
                            "expression": {
                              "id": 8687,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 8675,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8618,
                                  "src": "4921:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 8679,
                                "indexExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8678,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8676,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8647,
                                    "src": "4929:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 8677,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4933:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "4929:5:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "4921:14:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 8681,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8618,
                                      "src": "4950:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 8683,
                                    "indexExpression": {
                                      "id": 8682,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8647,
                                      "src": "4958:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4950:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8684,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8660,
                                    "src": "4962:9:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8685,
                                    "name": "reserveOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8662,
                                    "src": "4973:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8680,
                                  "name": "getAmountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8526,
                                  "src": "4938:11:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 8686,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4938:46:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4921:63:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8688,
                            "nodeType": "ExpressionStatement",
                            "src": "4921:63:32"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8655,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 8653,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8647,
                          "src": "4797:1:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 8654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4801:1:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4797:5:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 8690,
                      "initializationExpression": {
                        "assignments": [
                          8647
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8647,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "scope": 8690,
                            "src": "4768:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8646,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4768:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8652,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 8648,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8614,
                              "src": "4780:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 8649,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4780:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 8650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4794:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4780:15:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4768:27:32"
                      },
                      "loopExpression": {
                        "expression": {
                          "id": 8657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "--",
                          "prefix": false,
                          "src": "4804:3:32",
                          "subExpression": {
                            "id": 8656,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8647,
                            "src": "4804:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8658,
                        "nodeType": "ExpressionStatement",
                        "src": "4804:3:32"
                      },
                      "nodeType": "ForStatement",
                      "src": "4763:232:32"
                    }
                  ]
                },
                "id": 8692,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsIn",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8615,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8609,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "scope": 8692,
                      "src": "4462:15:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8608,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4462:7:32",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8611,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "scope": 8692,
                      "src": "4487:17:32",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8610,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4487:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8614,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "scope": 8692,
                      "src": "4514:21:32",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4514:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8613,
                        "nodeType": "ArrayTypeName",
                        "src": "4514:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4452:89:32"
                },
                "returnParameters": {
                  "id": 8619,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8618,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 8692,
                      "src": "4565:24:32",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8616,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4565:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8617,
                        "nodeType": "ArrayTypeName",
                        "src": "4565:9:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4564:26:32"
                },
                "scope": 8693,
                "src": "4431:570:32",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 8694,
            "src": "172:4831:32"
          }
        ],
        "src": "34:4970:32"
      }
    },
    "contracts/libraries/MateriaLiquidityMathLibrary.sol": {
      "id": 33,
      "AST": {
        "absolutePath": "contracts/libraries/MateriaLiquidityMathLibrary.sol",
        "exportedSymbols": {
          "IMateriaFactory": [
            7180
          ],
          "IMateriaPair": [
            7944
          ],
          "MateriaLibrary": [
            8693
          ],
          "MateriaLiquidityMathLibrary": [
            9163
          ],
          "Math": [
            9239
          ],
          "SafeMath": [
            9314
          ]
        },
        "id": 9164,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 8695,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:22:33"
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaPair.sol",
            "file": "../interfaces/IMateriaPair.sol",
            "id": 8696,
            "nodeType": "ImportDirective",
            "scope": 9164,
            "sourceUnit": 7945,
            "src": "24:40:33",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMateriaFactory.sol",
            "file": "../interfaces/IMateriaFactory.sol",
            "id": 8697,
            "nodeType": "ImportDirective",
            "scope": 9164,
            "sourceUnit": 7181,
            "src": "65:43:33",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "./SafeMath.sol",
            "id": 8698,
            "nodeType": "ImportDirective",
            "scope": 9164,
            "sourceUnit": 9315,
            "src": "109:24:33",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/Math.sol",
            "file": "./Math.sol",
            "id": 8699,
            "nodeType": "ImportDirective",
            "scope": 9164,
            "sourceUnit": 9240,
            "src": "134:20:33",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MateriaLibrary.sol",
            "file": "./MateriaLibrary.sol",
            "id": 8700,
            "nodeType": "ImportDirective",
            "scope": 9164,
            "sourceUnit": 8694,
            "src": "155:30:33",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "fullyImplemented": true,
            "id": 9163,
            "linearizedBaseContracts": [
              9163
            ],
            "name": "MateriaLiquidityMathLibrary",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 8703,
                "libraryName": {
                  "id": 8701,
                  "name": "SafeMath",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9314,
                  "src": "386:8:33"
                },
                "nodeType": "UsingForDirective",
                "src": "380:27:33",
                "typeName": {
                  "id": 8702,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "399:7:33",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "body": {
                  "id": 8794,
                  "nodeType": "Block",
                  "src": "702:676:33",
                  "statements": [
                    {
                      "expression": {
                        "id": 8728,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 8718,
                          "name": "aToB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8714,
                          "src": "712:4:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 8721,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8709,
                                  "src": "732:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 8722,
                                  "name": "truePriceTokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8707,
                                  "src": "742:15:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 8719,
                                  "name": "SafeMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9314,
                                  "src": "719:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeMath_$9314_$",
                                    "typeString": "type(library SafeMath)"
                                  }
                                },
                                "id": 8720,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9313,
                                "src": "719:12:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "719:39:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 8724,
                              "name": "reserveB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8711,
                              "src": "759:8:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "719:48:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 8726,
                            "name": "truePriceTokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8705,
                            "src": "770:15:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "719:66:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "712:73:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 8729,
                      "nodeType": "ExpressionStatement",
                      "src": "712:73:33"
                    },
                    {
                      "assignments": [
                        8731
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8731,
                          "mutability": "mutable",
                          "name": "invariant",
                          "nodeType": "VariableDeclaration",
                          "scope": 8794,
                          "src": "796:17:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8730,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "796:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 8736,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 8734,
                            "name": "reserveB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8711,
                            "src": "829:8:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 8732,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8709,
                            "src": "816:8:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9313,
                          "src": "816:12:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "816:22:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "796:42:33"
                    },
                    {
                      "assignments": [
                        8738
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8738,
                          "mutability": "mutable",
                          "name": "leftSide",
                          "nodeType": "VariableDeclaration",
                          "scope": 8794,
                          "src": "849:16:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8737,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "849:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 8762,
                      "initialValue": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "31303030",
                                      "id": 8745,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "935:4:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000_by_1",
                                        "typeString": "int_const 1000"
                                      },
                                      "value": "1000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1000_by_1",
                                        "typeString": "int_const 1000"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8743,
                                      "name": "invariant",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8731,
                                      "src": "921:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8744,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9313,
                                    "src": "921:13:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 8746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "921:19:33",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "condition": {
                                    "id": 8747,
                                    "name": "aToB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8714,
                                    "src": "958:4:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "id": 8749,
                                    "name": "truePriceTokenB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8707,
                                    "src": "983:15:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 8750,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "958:40:33",
                                  "trueExpression": {
                                    "id": 8748,
                                    "name": "truePriceTokenA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8705,
                                    "src": "965:15:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 8741,
                                  "name": "SafeMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9314,
                                  "src": "891:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeMath_$9314_$",
                                    "typeString": "type(library SafeMath)"
                                  }
                                },
                                "id": 8742,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9313,
                                "src": "891:12:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "891:108:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "393937",
                                  "id": 8758,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1064:3:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_997_by_1",
                                    "typeString": "int_const 997"
                                  },
                                  "value": "997"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_997_by_1",
                                    "typeString": "int_const 997"
                                  }
                                ],
                                "expression": {
                                  "components": [
                                    {
                                      "condition": {
                                        "id": 8752,
                                        "name": "aToB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8714,
                                        "src": "1018:4:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseExpression": {
                                        "id": 8754,
                                        "name": "truePriceTokenA",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8705,
                                        "src": "1043:15:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 8755,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "Conditional",
                                      "src": "1018:40:33",
                                      "trueExpression": {
                                        "id": 8753,
                                        "name": "truePriceTokenB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8707,
                                        "src": "1025:15:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 8756,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1017:42:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 8757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9313,
                                "src": "1017:46:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1017:51:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "891:177:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 8739,
                            "name": "Math",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9239,
                            "src": "868:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Math_$9239_$",
                              "typeString": "type(library Math)"
                            }
                          },
                          "id": 8740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sqrt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9238,
                          "src": "868:9:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "868:223:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "849:242:33"
                    },
                    {
                      "assignments": [
                        8764
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8764,
                          "mutability": "mutable",
                          "name": "rightSide",
                          "nodeType": "VariableDeclaration",
                          "scope": 8794,
                          "src": "1101:17:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8763,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1101:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 8778,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "components": [
                            {
                              "condition": {
                                "id": 8765,
                                "name": "aToB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8714,
                                "src": "1122:4:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "31303030",
                                    "id": 8772,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1163:4:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    },
                                    "value": "1000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    }
                                  ],
                                  "expression": {
                                    "id": 8770,
                                    "name": "reserveB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8711,
                                    "src": "1150:8:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 8771,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9313,
                                  "src": "1150:12:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 8773,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1150:18:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8774,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "1122:46:33",
                              "trueExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "31303030",
                                    "id": 8768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1142:4:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    },
                                    "value": "1000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    }
                                  ],
                                  "expression": {
                                    "id": 8766,
                                    "name": "reserveA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8709,
                                    "src": "1129:8:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 8767,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9313,
                                  "src": "1129:12:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 8769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1129:18:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 8775,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1121:48:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "hexValue": "393937",
                          "id": 8776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1172:3:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_997_by_1",
                            "typeString": "int_const 997"
                          },
                          "value": "997"
                        },
                        "src": "1121:54:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1101:74:33"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 8779,
                          "name": "leftSide",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8738,
                          "src": "1190:8:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 8780,
                          "name": "rightSide",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8764,
                          "src": "1201:9:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1190:20:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 8786,
                      "nodeType": "IfStatement",
                      "src": "1186:43:33",
                      "trueBody": {
                        "expression": {
                          "components": [
                            {
                              "hexValue": "66616c7365",
                              "id": 8782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1220:5:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "hexValue": "30",
                              "id": 8783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1227:1:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 8784,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1219:10:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bool,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 8717,
                        "id": 8785,
                        "nodeType": "Return",
                        "src": "1212:17:33"
                      }
                    },
                    {
                      "expression": {
                        "id": 8792,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 8787,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8716,
                          "src": "1337:8:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 8790,
                              "name": "rightSide",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8764,
                              "src": "1361:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 8788,
                              "name": "leftSide",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8738,
                              "src": "1348:8:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8789,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9285,
                            "src": "1348:12:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1348:23:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1337:34:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8793,
                      "nodeType": "ExpressionStatement",
                      "src": "1337:34:33"
                    }
                  ]
                },
                "id": 8795,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "computeProfitMaximizingTrade",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8712,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8705,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 8795,
                      "src": "535:23:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8704,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "535:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8707,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8795,
                      "src": "568:23:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8706,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "568:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8709,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "scope": 8795,
                      "src": "601:16:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8708,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "601:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8711,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8795,
                      "src": "627:16:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8710,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "627:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "525:124:33"
                },
                "returnParameters": {
                  "id": 8717,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8714,
                      "mutability": "mutable",
                      "name": "aToB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8795,
                      "src": "673:9:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8713,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "673:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8716,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "scope": 8795,
                      "src": "684:16:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8715,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "684:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "672:29:33"
                },
                "scope": 9163,
                "src": "488:890:33",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8892,
                  "nodeType": "Block",
                  "src": "1754:914:33",
                  "statements": [
                    {
                      "expression": {
                        "id": 8821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "components": [
                            {
                              "id": 8812,
                              "name": "reserveA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8808,
                              "src": "1811:8:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8813,
                              "name": "reserveB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8810,
                              "src": "1821:8:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 8814,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "1810:20:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 8817,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8797,
                              "src": "1860:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8818,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8799,
                              "src": "1869:6:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8819,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8801,
                              "src": "1877:6:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 8815,
                              "name": "MateriaLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8693,
                              "src": "1833:14:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                "typeString": "type(library MateriaLibrary)"
                              }
                            },
                            "id": 8816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserves",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8367,
                            "src": "1833:26:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,address) view returns (uint256,uint256)"
                            }
                          },
                          "id": 8820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1833:51:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "1810:74:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8822,
                      "nodeType": "ExpressionStatement",
                      "src": "1810:74:33"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 8830,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8826,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8824,
                                "name": "reserveA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8808,
                                "src": "1903:8:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8825,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1914:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1903:12:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8829,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8827,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8810,
                                "src": "1919:8:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1930:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1919:12:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1903:28:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "4d6174657269614172626974726167654c6962726172793a205a45524f5f504149525f5245534552564553",
                            "id": 8831,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1933:45:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5f799a90465e05bf5bdccab55a4929c0981bba6f1e5931455106fb1a9a6cc3ae",
                              "typeString": "literal_string \"MateriaArbitrageLibrary: ZERO_PAIR_RESERVES\""
                            },
                            "value": "MateriaArbitrageLibrary: ZERO_PAIR_RESERVES"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_5f799a90465e05bf5bdccab55a4929c0981bba6f1e5931455106fb1a9a6cc3ae",
                              "typeString": "literal_string \"MateriaArbitrageLibrary: ZERO_PAIR_RESERVES\""
                            }
                          ],
                          "id": 8823,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "1895:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1895:84:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8833,
                      "nodeType": "ExpressionStatement",
                      "src": "1895:84:33"
                    },
                    {
                      "assignments": [
                        8835,
                        8837
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8835,
                          "mutability": "mutable",
                          "name": "aToB",
                          "nodeType": "VariableDeclaration",
                          "scope": 8892,
                          "src": "2057:9:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 8834,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2057:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 8837,
                          "mutability": "mutable",
                          "name": "amountIn",
                          "nodeType": "VariableDeclaration",
                          "scope": 8892,
                          "src": "2068:16:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8836,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2068:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 8844,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 8839,
                            "name": "truePriceTokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8803,
                            "src": "2117:15:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 8840,
                            "name": "truePriceTokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8805,
                            "src": "2134:15:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 8841,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8808,
                            "src": "2151:8:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 8842,
                            "name": "reserveB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8810,
                            "src": "2161:8:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8838,
                          "name": "computeProfitMaximizingTrade",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8795,
                          "src": "2088:28:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256,uint256) pure returns (bool,uint256)"
                          }
                        },
                        "id": 8843,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2088:82:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                          "typeString": "tuple(bool,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2056:114:33"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8847,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 8845,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8837,
                          "src": "2185:8:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 8846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2197:1:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2185:13:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 8853,
                      "nodeType": "IfStatement",
                      "src": "2181:71:33",
                      "trueBody": {
                        "id": 8852,
                        "nodeType": "Block",
                        "src": "2200:52:33",
                        "statements": [
                          {
                            "expression": {
                              "components": [
                                {
                                  "id": 8848,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8808,
                                  "src": "2222:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 8849,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8810,
                                  "src": "2232:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 8850,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2221:20:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "functionReturnParameters": 8811,
                            "id": 8851,
                            "nodeType": "Return",
                            "src": "2214:27:33"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "id": 8854,
                        "name": "aToB",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8835,
                        "src": "2314:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 8890,
                        "nodeType": "Block",
                        "src": "2494:168:33",
                        "statements": [
                          {
                            "assignments": [
                              8874
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 8874,
                                "mutability": "mutable",
                                "name": "amountOut",
                                "nodeType": "VariableDeclaration",
                                "scope": 8890,
                                "src": "2508:14:33",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 8873,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2508:4:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 8881,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 8877,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8837,
                                  "src": "2553:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 8878,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8810,
                                  "src": "2563:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 8879,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8808,
                                  "src": "2573:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 8875,
                                  "name": "MateriaLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8693,
                                  "src": "2525:14:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                    "typeString": "type(library MateriaLibrary)"
                                  }
                                },
                                "id": 8876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAmountOut",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8466,
                                "src": "2525:27:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2525:57:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2508:74:33"
                          },
                          {
                            "expression": {
                              "id": 8884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 8882,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8810,
                                "src": "2596:8:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "id": 8883,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8837,
                                "src": "2608:8:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2596:20:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8885,
                            "nodeType": "ExpressionStatement",
                            "src": "2596:20:33"
                          },
                          {
                            "expression": {
                              "id": 8888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 8886,
                                "name": "reserveA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8808,
                                "src": "2630:8:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "id": 8887,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8874,
                                "src": "2642:9:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2630:21:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8889,
                            "nodeType": "ExpressionStatement",
                            "src": "2630:21:33"
                          }
                        ]
                      },
                      "id": 8891,
                      "nodeType": "IfStatement",
                      "src": "2310:352:33",
                      "trueBody": {
                        "id": 8872,
                        "nodeType": "Block",
                        "src": "2320:168:33",
                        "statements": [
                          {
                            "assignments": [
                              8856
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 8856,
                                "mutability": "mutable",
                                "name": "amountOut",
                                "nodeType": "VariableDeclaration",
                                "scope": 8872,
                                "src": "2334:14:33",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 8855,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2334:4:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 8863,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 8859,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8837,
                                  "src": "2379:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 8860,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8808,
                                  "src": "2389:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 8861,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8810,
                                  "src": "2399:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 8857,
                                  "name": "MateriaLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8693,
                                  "src": "2351:14:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                    "typeString": "type(library MateriaLibrary)"
                                  }
                                },
                                "id": 8858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAmountOut",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8466,
                                "src": "2351:27:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2351:57:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2334:74:33"
                          },
                          {
                            "expression": {
                              "id": 8866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 8864,
                                "name": "reserveA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8808,
                                "src": "2422:8:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "id": 8865,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8837,
                                "src": "2434:8:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2422:20:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8867,
                            "nodeType": "ExpressionStatement",
                            "src": "2422:20:33"
                          },
                          {
                            "expression": {
                              "id": 8870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 8868,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8810,
                                "src": "2456:8:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "id": 8869,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8856,
                                "src": "2468:9:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2456:21:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8871,
                            "nodeType": "ExpressionStatement",
                            "src": "2456:21:33"
                          }
                        ]
                      }
                    }
                  ]
                },
                "id": 8893,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getReservesAfterArbitrage",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8806,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8797,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "scope": 8893,
                      "src": "1559:15:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8796,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1559:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8799,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 8893,
                      "src": "1584:14:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8798,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1584:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8801,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8893,
                      "src": "1608:14:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8800,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1608:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8803,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 8893,
                      "src": "1632:23:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8802,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1632:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8805,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8893,
                      "src": "1665:23:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8804,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1665:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1549:145:33"
                },
                "returnParameters": {
                  "id": 8811,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8808,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "scope": 8893,
                      "src": "1718:16:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8807,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1718:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8810,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8893,
                      "src": "1736:16:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8809,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1736:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1717:36:33"
                },
                "scope": 9163,
                "src": "1515:1153:33",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8993,
                  "nodeType": "Block",
                  "src": "3003:635:33",
                  "statements": [
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 8916,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 8912,
                          "name": "feeOn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8903,
                          "src": "3017:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8913,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8905,
                            "src": "3026:5:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3034:1:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3026:9:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3017:18:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 8978,
                      "nodeType": "IfStatement",
                      "src": "3013:510:33",
                      "trueBody": {
                        "id": 8977,
                        "nodeType": "Block",
                        "src": "3037:486:33",
                        "statements": [
                          {
                            "assignments": [
                              8918
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 8918,
                                "mutability": "mutable",
                                "name": "rootK",
                                "nodeType": "VariableDeclaration",
                                "scope": 8977,
                                "src": "3051:10:33",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 8917,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3051:4:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 8926,
                            "initialValue": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 8923,
                                      "name": "reservesB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8897,
                                      "src": "3088:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8921,
                                      "name": "reservesA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8895,
                                      "src": "3074:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8922,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9313,
                                    "src": "3074:13:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 8924,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3074:24:33",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 8919,
                                  "name": "Math",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9239,
                                  "src": "3064:4:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Math_$9239_$",
                                    "typeString": "type(library Math)"
                                  }
                                },
                                "id": 8920,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sqrt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9238,
                                "src": "3064:9:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3064:35:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3051:48:33"
                          },
                          {
                            "assignments": [
                              8928
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 8928,
                                "mutability": "mutable",
                                "name": "rootKLast",
                                "nodeType": "VariableDeclaration",
                                "scope": 8977,
                                "src": "3113:14:33",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 8927,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3113:4:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 8933,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 8931,
                                  "name": "kLast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8905,
                                  "src": "3140:5:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 8929,
                                  "name": "Math",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9239,
                                  "src": "3130:4:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Math_$9239_$",
                                    "typeString": "type(library Math)"
                                  }
                                },
                                "id": 8930,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sqrt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9238,
                                "src": "3130:9:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3130:16:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3113:33:33"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8934,
                                "name": "rootK",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8918,
                                "src": "3164:5:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 8935,
                                "name": "rootKLast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8928,
                                "src": "3172:9:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3164:17:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 8976,
                            "nodeType": "IfStatement",
                            "src": "3160:353:33",
                            "trueBody": {
                              "id": 8975,
                              "nodeType": "Block",
                              "src": "3183:330:33",
                              "statements": [
                                {
                                  "assignments": [
                                    8938
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 8938,
                                      "mutability": "mutable",
                                      "name": "numerator1",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 8975,
                                      "src": "3201:15:33",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 8937,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3201:4:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 8940,
                                  "initialValue": {
                                    "id": 8939,
                                    "name": "totalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8899,
                                    "src": "3219:11:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3201:29:33"
                                },
                                {
                                  "assignments": [
                                    8942
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 8942,
                                      "mutability": "mutable",
                                      "name": "numerator2",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 8975,
                                      "src": "3248:15:33",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 8941,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3248:4:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 8947,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "id": 8945,
                                        "name": "rootKLast",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8928,
                                        "src": "3276:9:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 8943,
                                        "name": "rootK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8918,
                                        "src": "3266:5:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 8944,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9285,
                                      "src": "3266:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 8946,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3266:20:33",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3248:38:33"
                                },
                                {
                                  "assignments": [
                                    8949
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 8949,
                                      "mutability": "mutable",
                                      "name": "denominator",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 8975,
                                      "src": "3304:16:33",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 8948,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3304:4:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 8957,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "id": 8955,
                                        "name": "rootKLast",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8928,
                                        "src": "3340:9:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "35",
                                            "id": 8952,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3333:1:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_5_by_1",
                                              "typeString": "int_const 5"
                                            },
                                            "value": "5"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_5_by_1",
                                              "typeString": "int_const 5"
                                            }
                                          ],
                                          "expression": {
                                            "id": 8950,
                                            "name": "rootK",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8918,
                                            "src": "3323:5:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 8951,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 9313,
                                          "src": "3323:9:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 8953,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3323:12:33",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 8954,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9263,
                                      "src": "3323:16:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 8956,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3323:27:33",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3304:46:33"
                                },
                                {
                                  "assignments": [
                                    8959
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 8959,
                                      "mutability": "mutable",
                                      "name": "feeLiquidity",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 8975,
                                      "src": "3368:17:33",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 8958,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3368:4:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 8967,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8966,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 8962,
                                          "name": "numerator1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8938,
                                          "src": "3401:10:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 8963,
                                          "name": "numerator2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8942,
                                          "src": "3413:10:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 8960,
                                          "name": "SafeMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9314,
                                          "src": "3388:8:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_SafeMath_$9314_$",
                                            "typeString": "type(library SafeMath)"
                                          }
                                        },
                                        "id": 8961,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 9313,
                                        "src": "3388:12:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 8964,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3388:36:33",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 8965,
                                      "name": "denominator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8949,
                                      "src": "3426:11:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3388:49:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3368:69:33"
                                },
                                {
                                  "expression": {
                                    "id": 8973,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 8968,
                                      "name": "totalSupply",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8899,
                                      "src": "3455:11:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 8971,
                                          "name": "feeLiquidity",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8959,
                                          "src": "3485:12:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 8969,
                                          "name": "totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8899,
                                          "src": "3469:11:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 8970,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "add",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 9263,
                                        "src": "3469:15:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 8972,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3469:29:33",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3455:43:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 8974,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3455:43:33"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 8981,
                                  "name": "liquidityAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8901,
                                  "src": "3554:15:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 8979,
                                  "name": "reservesA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8895,
                                  "src": "3540:9:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 8980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9313,
                                "src": "3540:13:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8982,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3540:30:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 8983,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8899,
                              "src": "3573:11:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3540:44:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8990,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 8987,
                                  "name": "liquidityAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8901,
                                  "src": "3600:15:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 8985,
                                  "name": "reservesB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8897,
                                  "src": "3586:9:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 8986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9313,
                                "src": "3586:13:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8988,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3586:30:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 8989,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8899,
                              "src": "3619:11:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3586:44:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 8991,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3539:92:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "functionReturnParameters": 8911,
                      "id": 8992,
                      "nodeType": "Return",
                      "src": "3532:99:33"
                    }
                  ]
                },
                "id": 8994,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "computeLiquidityValue",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 8906,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8895,
                      "mutability": "mutable",
                      "name": "reservesA",
                      "nodeType": "VariableDeclaration",
                      "scope": 8994,
                      "src": "2783:17:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8894,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2783:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8897,
                      "mutability": "mutable",
                      "name": "reservesB",
                      "nodeType": "VariableDeclaration",
                      "scope": 8994,
                      "src": "2810:17:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8896,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2810:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8899,
                      "mutability": "mutable",
                      "name": "totalSupply",
                      "nodeType": "VariableDeclaration",
                      "scope": 8994,
                      "src": "2837:19:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8898,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2837:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8901,
                      "mutability": "mutable",
                      "name": "liquidityAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 8994,
                      "src": "2866:23:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8900,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2866:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8903,
                      "mutability": "mutable",
                      "name": "feeOn",
                      "nodeType": "VariableDeclaration",
                      "scope": 8994,
                      "src": "2899:10:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8902,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2899:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8905,
                      "mutability": "mutable",
                      "name": "kLast",
                      "nodeType": "VariableDeclaration",
                      "scope": 8994,
                      "src": "2919:10:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8904,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2919:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2773:162:33"
                },
                "returnParameters": {
                  "id": 8911,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8908,
                      "mutability": "mutable",
                      "name": "tokenAAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 8994,
                      "src": "2959:20:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8907,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2959:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8910,
                      "mutability": "mutable",
                      "name": "tokenBAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 8994,
                      "src": "2981:20:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8909,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2981:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "2958:44:33"
                },
                "scope": 9163,
                "src": "2743:895:33",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 9069,
                  "nodeType": "Block",
                  "src": "4106:467:33",
                  "statements": [
                    {
                      "assignments": [
                        9010,
                        9012
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9010,
                          "mutability": "mutable",
                          "name": "reservesA",
                          "nodeType": "VariableDeclaration",
                          "scope": 9069,
                          "src": "4117:17:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 9009,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4117:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 9012,
                          "mutability": "mutable",
                          "name": "reservesB",
                          "nodeType": "VariableDeclaration",
                          "scope": 9069,
                          "src": "4136:17:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 9011,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4136:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9019,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 9015,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8996,
                            "src": "4184:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 9016,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8998,
                            "src": "4193:6:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 9017,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9000,
                            "src": "4201:6:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 9013,
                            "name": "MateriaLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8693,
                            "src": "4157:14:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                              "typeString": "type(library MateriaLibrary)"
                            }
                          },
                          "id": 9014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8367,
                          "src": "4157:26:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address) view returns (uint256,uint256)"
                          }
                        },
                        "id": 9018,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4157:51:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4116:92:33"
                    },
                    {
                      "assignments": [
                        9022
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9022,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "scope": 9069,
                          "src": "4218:17:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                            "typeString": "contract IMateriaPair"
                          },
                          "typeName": {
                            "id": 9021,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 9020,
                              "name": "IMateriaPair",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 7944,
                              "src": "4218:12:33"
                            },
                            "referencedDeclaration": 7944,
                            "src": "4218:12:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                              "typeString": "contract IMateriaPair"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9031,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9026,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8996,
                                "src": "4274:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 9027,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8998,
                                "src": "4283:6:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 9028,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9000,
                                "src": "4291:6:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 9024,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "4251:14:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 9025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "4251:22:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 9029,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4251:47:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 9023,
                          "name": "IMateriaPair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7944,
                          "src": "4238:12:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                            "typeString": "type(contract IMateriaPair)"
                          }
                        },
                        "id": 9030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4238:61:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                          "typeString": "contract IMateriaPair"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4218:81:33"
                    },
                    {
                      "assignments": [
                        9033
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9033,
                          "mutability": "mutable",
                          "name": "feeOn",
                          "nodeType": "VariableDeclaration",
                          "scope": 9069,
                          "src": "4309:10:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 9032,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "4309:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9044,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 9043,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 9035,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8996,
                                  "src": "4338:7:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 9034,
                                "name": "IMateriaFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7180,
                                "src": "4322:15:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMateriaFactory_$7180_$",
                                  "typeString": "type(contract IMateriaFactory)"
                                }
                              },
                              "id": 9036,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4322:24:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                "typeString": "contract IMateriaFactory"
                              }
                            },
                            "id": 9037,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeTo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7115,
                            "src": "4322:30:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 9038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4322:32:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 9041,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4366:1:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 9040,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4358:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 9039,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4358:7:33",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 9042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4358:10:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4322:46:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4309:59:33"
                    },
                    {
                      "assignments": [
                        9046
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9046,
                          "mutability": "mutable",
                          "name": "kLast",
                          "nodeType": "VariableDeclaration",
                          "scope": 9069,
                          "src": "4378:10:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 9045,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4378:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9053,
                      "initialValue": {
                        "condition": {
                          "id": 9047,
                          "name": "feeOn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9033,
                          "src": "4391:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "hexValue": "30",
                          "id": 9051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4414:1:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 9052,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "4391:24:33",
                        "trueExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 9048,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9022,
                              "src": "4399:4:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                                "typeString": "contract IMateriaPair"
                              }
                            },
                            "id": 9049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "kLast",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7864,
                            "src": "4399:10:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 9050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4399:12:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4378:37:33"
                    },
                    {
                      "assignments": [
                        9055
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9055,
                          "mutability": "mutable",
                          "name": "totalSupply",
                          "nodeType": "VariableDeclaration",
                          "scope": 9069,
                          "src": "4425:16:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 9054,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4425:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9059,
                      "initialValue": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 9056,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9022,
                            "src": "4444:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                              "typeString": "contract IMateriaPair"
                            }
                          },
                          "id": 9057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7703,
                          "src": "4444:16:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 9058,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4444:18:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4425:37:33"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 9061,
                            "name": "reservesA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9010,
                            "src": "4501:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 9062,
                            "name": "reservesB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9012,
                            "src": "4512:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 9063,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9055,
                            "src": "4523:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 9064,
                            "name": "liquidityAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9002,
                            "src": "4536:15:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 9065,
                            "name": "feeOn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9033,
                            "src": "4553:5:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 9066,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9046,
                            "src": "4560:5:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9060,
                          "name": "computeLiquidityValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8994,
                          "src": "4479:21:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256,uint256,bool,uint256) pure returns (uint256,uint256)"
                          }
                        },
                        "id": 9067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4479:87:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "functionReturnParameters": 9008,
                      "id": 9068,
                      "nodeType": "Return",
                      "src": "4472:94:33"
                    }
                  ]
                },
                "id": 9070,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getLiquidityValue",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9003,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8996,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "scope": 9070,
                      "src": "3936:15:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8995,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3936:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8998,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 9070,
                      "src": "3961:14:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8997,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3961:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9000,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 9070,
                      "src": "3985:14:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8999,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3985:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9002,
                      "mutability": "mutable",
                      "name": "liquidityAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 9070,
                      "src": "4009:23:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9001,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4009:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "3926:112:33"
                },
                "returnParameters": {
                  "id": 9008,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9005,
                      "mutability": "mutable",
                      "name": "tokenAAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 9070,
                      "src": "4062:20:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9004,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4062:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9007,
                      "mutability": "mutable",
                      "name": "tokenBAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 9070,
                      "src": "4084:20:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9006,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4084:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4061:44:33"
                },
                "scope": 9163,
                "src": "3900:673:33",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 9161,
                  "nodeType": "Block",
                  "src": "5114:661:33",
                  "statements": [
                    {
                      "assignments": [
                        9090
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9090,
                          "mutability": "mutable",
                          "name": "feeOn",
                          "nodeType": "VariableDeclaration",
                          "scope": 9161,
                          "src": "5124:10:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 9089,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "5124:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9101,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 9100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 9092,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9072,
                                  "src": "5153:7:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 9091,
                                "name": "IMateriaFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7180,
                                "src": "5137:15:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMateriaFactory_$7180_$",
                                  "typeString": "type(contract IMateriaFactory)"
                                }
                              },
                              "id": 9093,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5137:24:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMateriaFactory_$7180",
                                "typeString": "contract IMateriaFactory"
                              }
                            },
                            "id": 9094,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeTo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7115,
                            "src": "5137:30:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 9095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5137:32:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 9098,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5181:1:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 9097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5173:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 9096,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5173:7:33",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 9099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5173:10:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5137:46:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5124:59:33"
                    },
                    {
                      "assignments": [
                        9104
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9104,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "scope": 9161,
                          "src": "5193:17:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                            "typeString": "contract IMateriaPair"
                          },
                          "typeName": {
                            "id": 9103,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 9102,
                              "name": "IMateriaPair",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 7944,
                              "src": "5193:12:33"
                            },
                            "referencedDeclaration": 7944,
                            "src": "5193:12:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                              "typeString": "contract IMateriaPair"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9113,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9108,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9072,
                                "src": "5249:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 9109,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9074,
                                "src": "5258:6:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 9110,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9076,
                                "src": "5266:6:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 9106,
                                "name": "MateriaLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8693,
                                "src": "5226:14:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MateriaLibrary_$8693_$",
                                  "typeString": "type(library MateriaLibrary)"
                                }
                              },
                              "id": 9107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8317,
                              "src": "5226:22:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 9111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5226:47:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 9105,
                          "name": "IMateriaPair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7944,
                          "src": "5213:12:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IMateriaPair_$7944_$",
                            "typeString": "type(contract IMateriaPair)"
                          }
                        },
                        "id": 9112,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5213:61:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                          "typeString": "contract IMateriaPair"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5193:81:33"
                    },
                    {
                      "assignments": [
                        9115
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9115,
                          "mutability": "mutable",
                          "name": "kLast",
                          "nodeType": "VariableDeclaration",
                          "scope": 9161,
                          "src": "5284:10:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 9114,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5284:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9122,
                      "initialValue": {
                        "condition": {
                          "id": 9116,
                          "name": "feeOn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9090,
                          "src": "5297:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "hexValue": "30",
                          "id": 9120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5320:1:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 9121,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "5297:24:33",
                        "trueExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 9117,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9104,
                              "src": "5305:4:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                                "typeString": "contract IMateriaPair"
                              }
                            },
                            "id": 9118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "kLast",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7864,
                            "src": "5305:10:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 9119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5305:12:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5284:37:33"
                    },
                    {
                      "assignments": [
                        9124
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9124,
                          "mutability": "mutable",
                          "name": "totalSupply",
                          "nodeType": "VariableDeclaration",
                          "scope": 9161,
                          "src": "5331:16:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 9123,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5331:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9128,
                      "initialValue": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 9125,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9104,
                            "src": "5350:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMateriaPair_$7944",
                              "typeString": "contract IMateriaPair"
                            }
                          },
                          "id": 9126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7703,
                          "src": "5350:16:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 9127,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5350:18:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5331:37:33"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 9136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9130,
                                "name": "totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9124,
                                "src": "5436:11:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 9131,
                                "name": "liquidityAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9082,
                                "src": "5451:15:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5436:30:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9133,
                                "name": "liquidityAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9082,
                                "src": "5470:15:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 9134,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5488:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5470:19:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "5436:53:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "436f6d707574654c697175696469747956616c75653a204c49515549444954595f414d4f554e54",
                            "id": 9137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5491:41:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eba3c4b4bce1b370b996e883c442849cfe288700c2faa2de6af84d237654e6b8",
                              "typeString": "literal_string \"ComputeLiquidityValue: LIQUIDITY_AMOUNT\""
                            },
                            "value": "ComputeLiquidityValue: LIQUIDITY_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_eba3c4b4bce1b370b996e883c442849cfe288700c2faa2de6af84d237654e6b8",
                              "typeString": "literal_string \"ComputeLiquidityValue: LIQUIDITY_AMOUNT\""
                            }
                          ],
                          "id": 9129,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "5428:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5428:105:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9139,
                      "nodeType": "ExpressionStatement",
                      "src": "5428:105:33"
                    },
                    {
                      "assignments": [
                        9141,
                        9143
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9141,
                          "mutability": "mutable",
                          "name": "reservesA",
                          "nodeType": "VariableDeclaration",
                          "scope": 9161,
                          "src": "5545:14:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 9140,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5545:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 9143,
                          "mutability": "mutable",
                          "name": "reservesB",
                          "nodeType": "VariableDeclaration",
                          "scope": 9161,
                          "src": "5561:14:33",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 9142,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5561:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9151,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 9145,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9072,
                            "src": "5605:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 9146,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9074,
                            "src": "5614:6:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 9147,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9076,
                            "src": "5622:6:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 9148,
                            "name": "truePriceTokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9078,
                            "src": "5630:15:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 9149,
                            "name": "truePriceTokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9080,
                            "src": "5647:15:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9144,
                          "name": "getReservesAfterArbitrage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8893,
                          "src": "5579:25:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address,uint256,uint256) view returns (uint256,uint256)"
                          }
                        },
                        "id": 9150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5579:84:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5544:119:33"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 9153,
                            "name": "reservesA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9141,
                            "src": "5703:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 9154,
                            "name": "reservesB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9143,
                            "src": "5714:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 9155,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9124,
                            "src": "5725:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 9156,
                            "name": "liquidityAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9082,
                            "src": "5738:15:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 9157,
                            "name": "feeOn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9090,
                            "src": "5755:5:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 9158,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9115,
                            "src": "5762:5:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9152,
                          "name": "computeLiquidityValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8994,
                          "src": "5681:21:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256,uint256,bool,uint256) pure returns (uint256,uint256)"
                          }
                        },
                        "id": 9159,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5681:87:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "functionReturnParameters": 9088,
                      "id": 9160,
                      "nodeType": "Return",
                      "src": "5674:94:33"
                    }
                  ]
                },
                "id": 9162,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getLiquidityValueAfterArbitrageToPrice",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9083,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9072,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "scope": 9162,
                      "src": "4856:15:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9071,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4856:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9074,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 9162,
                      "src": "4881:14:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9073,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4881:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9076,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 9162,
                      "src": "4905:14:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9075,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4905:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9078,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "scope": 9162,
                      "src": "4929:23:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9077,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4929:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9080,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "scope": 9162,
                      "src": "4962:23:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9079,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4962:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9082,
                      "mutability": "mutable",
                      "name": "liquidityAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 9162,
                      "src": "4995:23:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9081,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4995:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "4846:178:33"
                },
                "returnParameters": {
                  "id": 9088,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9085,
                      "mutability": "mutable",
                      "name": "tokenAAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 9162,
                      "src": "5057:20:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9084,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5057:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9087,
                      "mutability": "mutable",
                      "name": "tokenBAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 9162,
                      "src": "5087:20:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9086,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5087:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "5047:66:33"
                },
                "scope": 9163,
                "src": "4799:976:33",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 9164,
            "src": "338:5439:33"
          }
        ],
        "src": "0:5778:33"
      }
    },
    "contracts/libraries/Math.sol": {
      "id": 34,
      "AST": {
        "absolutePath": "contracts/libraries/Math.sol",
        "exportedSymbols": {
          "Math": [
            9239
          ]
        },
        "id": 9240,
        "license": "UNLICENSED",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9165,
            "literals": [
              "solidity",
              "=",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "40:23:34"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "fullyImplemented": true,
            "id": 9239,
            "linearizedBaseContracts": [
              9239
            ],
            "name": "Math",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 9183,
                  "nodeType": "Block",
                  "src": "197:34:34",
                  "statements": [
                    {
                      "expression": {
                        "id": 9181,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 9174,
                          "name": "z",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9172,
                          "src": "207:1:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9175,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9167,
                              "src": "211:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "id": 9176,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9169,
                              "src": "215:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "211:5:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "id": 9179,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9169,
                            "src": "223:1:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "211:13:34",
                          "trueExpression": {
                            "id": 9178,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9167,
                            "src": "219:1:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "207:17:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9182,
                      "nodeType": "ExpressionStatement",
                      "src": "207:17:34"
                    }
                  ]
                },
                "id": 9184,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "min",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9170,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9167,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "scope": 9184,
                      "src": "150:6:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9166,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "150:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9169,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "scope": 9184,
                      "src": "158:6:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9168,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "158:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "149:16:34"
                },
                "returnParameters": {
                  "id": 9173,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9172,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "scope": 9184,
                      "src": "189:6:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9171,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "189:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "188:8:34"
                },
                "scope": 9239,
                "src": "137:94:34",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 9237,
                  "nodeType": "Block",
                  "src": "399:239:34",
                  "statements": [
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 9193,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 9191,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9186,
                          "src": "413:1:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "33",
                          "id": 9192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "417:1:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "src": "413:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9227,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9186,
                            "src": "594:1:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 9228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "599:1:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "594:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9235,
                        "nodeType": "IfStatement",
                        "src": "590:42:34",
                        "trueBody": {
                          "id": 9234,
                          "nodeType": "Block",
                          "src": "602:30:34",
                          "statements": [
                            {
                              "expression": {
                                "id": 9232,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9230,
                                  "name": "z",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9189,
                                  "src": "616:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 9231,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "620:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "616:5:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9233,
                              "nodeType": "ExpressionStatement",
                              "src": "616:5:34"
                            }
                          ]
                        }
                      },
                      "id": 9236,
                      "nodeType": "IfStatement",
                      "src": "409:223:34",
                      "trueBody": {
                        "id": 9226,
                        "nodeType": "Block",
                        "src": "420:164:34",
                        "statements": [
                          {
                            "expression": {
                              "id": 9196,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 9194,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9189,
                                "src": "434:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "id": 9195,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9186,
                                "src": "438:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "434:5:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9197,
                            "nodeType": "ExpressionStatement",
                            "src": "434:5:34"
                          },
                          {
                            "assignments": [
                              9199
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 9199,
                                "mutability": "mutable",
                                "name": "x",
                                "nodeType": "VariableDeclaration",
                                "scope": 9226,
                                "src": "453:6:34",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 9198,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "453:4:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 9205,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9200,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9186,
                                  "src": "462:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 9201,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "466:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "462:5:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 9203,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "470:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "462:9:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "453:18:34"
                          },
                          {
                            "body": {
                              "id": 9224,
                              "nodeType": "Block",
                              "src": "499:75:34",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 9211,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 9209,
                                      "name": "z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9189,
                                      "src": "517:1:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 9210,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9199,
                                      "src": "521:1:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "517:5:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9212,
                                  "nodeType": "ExpressionStatement",
                                  "src": "517:5:34"
                                },
                                {
                                  "expression": {
                                    "id": 9222,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 9213,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9199,
                                      "src": "540:1:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9221,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 9218,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 9216,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 9214,
                                                "name": "y",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9186,
                                                "src": "545:1:34",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "id": 9215,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9199,
                                                "src": "549:1:34",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "545:5:34",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "id": 9217,
                                              "name": "x",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9199,
                                              "src": "553:1:34",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "545:9:34",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 9219,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "544:11:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "hexValue": "32",
                                        "id": 9220,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "558:1:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "544:15:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "540:19:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9223,
                                  "nodeType": "ExpressionStatement",
                                  "src": "540:19:34"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9206,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9199,
                                "src": "492:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 9207,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9189,
                                "src": "496:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "492:5:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 9225,
                            "nodeType": "WhileStatement",
                            "src": "485:89:34"
                          }
                        ]
                      }
                    }
                  ]
                },
                "id": 9238,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sqrt",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9187,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9186,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "scope": 9238,
                      "src": "360:6:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9185,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "360:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "359:8:34"
                },
                "returnParameters": {
                  "id": 9190,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9189,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "scope": 9238,
                      "src": "391:6:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9188,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "391:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "390:8:34"
                },
                "scope": 9239,
                "src": "346:292:34",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 9240,
            "src": "118:522:34"
          }
        ],
        "src": "40:601:34"
      }
    },
    "contracts/libraries/SafeMath.sol": {
      "id": 35,
      "AST": {
        "absolutePath": "contracts/libraries/SafeMath.sol",
        "exportedSymbols": {
          "SafeMath": [
            9314
          ]
        },
        "id": 9315,
        "license": "UNLICENSED",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9241,
            "literals": [
              "solidity",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "40:22:35"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "fullyImplemented": true,
            "id": 9314,
            "linearizedBaseContracts": [
              9314
            ],
            "name": "SafeMath",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 9262,
                  "nodeType": "Block",
                  "src": "253:66:35",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "id": 9255,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 9251,
                                    "name": "z",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9248,
                                    "src": "272:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9254,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9252,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9243,
                                      "src": "276:1:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "id": 9253,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9245,
                                      "src": "280:1:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "276:5:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "272:9:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 9256,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "271:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "id": 9257,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9243,
                              "src": "286:1:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "271:16:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "64732d6d6174682d6164642d6f766572666c6f77",
                            "id": 9259,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "289:22:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                              "typeString": "literal_string \"ds-math-add-overflow\""
                            },
                            "value": "ds-math-add-overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                              "typeString": "literal_string \"ds-math-add-overflow\""
                            }
                          ],
                          "id": 9250,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "263:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "263:49:35",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9261,
                      "nodeType": "ExpressionStatement",
                      "src": "263:49:35"
                    }
                  ]
                },
                "id": 9263,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9246,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9243,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "scope": 9263,
                      "src": "206:6:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9242,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "206:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9245,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "scope": 9263,
                      "src": "214:6:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9244,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "214:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "205:16:35"
                },
                "returnParameters": {
                  "id": 9249,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9248,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "scope": 9263,
                      "src": "245:6:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9247,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "245:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "244:8:35"
                },
                "scope": 9314,
                "src": "193:126:35",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 9284,
                  "nodeType": "Block",
                  "src": "385:67:35",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9280,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "id": 9277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 9273,
                                    "name": "z",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9270,
                                    "src": "404:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9276,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9274,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9265,
                                      "src": "408:1:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 9275,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9267,
                                      "src": "412:1:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "408:5:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "404:9:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 9278,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "403:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "id": 9279,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9265,
                              "src": "418:1:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "403:16:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "64732d6d6174682d7375622d756e646572666c6f77",
                            "id": 9281,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "421:23:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                              "typeString": "literal_string \"ds-math-sub-underflow\""
                            },
                            "value": "ds-math-sub-underflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                              "typeString": "literal_string \"ds-math-sub-underflow\""
                            }
                          ],
                          "id": 9272,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "395:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9282,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "395:50:35",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9283,
                      "nodeType": "ExpressionStatement",
                      "src": "395:50:35"
                    }
                  ]
                },
                "id": 9285,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sub",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9268,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9265,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "scope": 9285,
                      "src": "338:6:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9264,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "338:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9267,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "scope": 9285,
                      "src": "346:6:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9266,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "346:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "337:16:35"
                },
                "returnParameters": {
                  "id": 9271,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9270,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "scope": 9285,
                      "src": "377:6:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9269,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "377:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "376:8:35"
                },
                "scope": 9314,
                "src": "325:127:35",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 9312,
                  "nodeType": "Block",
                  "src": "518:80:35",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 9308,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9297,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9295,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9289,
                                "src": "536:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 9296,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "541:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "536:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "id": 9302,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 9298,
                                        "name": "z",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9292,
                                        "src": "547:1:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9301,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 9299,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9287,
                                          "src": "551:1:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 9300,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9289,
                                          "src": "555:1:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "551:5:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "547:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 9303,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "546:11:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 9304,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9289,
                                  "src": "560:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "546:15:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 9306,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9287,
                                "src": "565:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "546:20:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "536:30:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "64732d6d6174682d6d756c2d6f766572666c6f77",
                            "id": 9309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "568:22:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                              "typeString": "literal_string \"ds-math-mul-overflow\""
                            },
                            "value": "ds-math-mul-overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                              "typeString": "literal_string \"ds-math-mul-overflow\""
                            }
                          ],
                          "id": 9294,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "528:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "528:63:35",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9311,
                      "nodeType": "ExpressionStatement",
                      "src": "528:63:35"
                    }
                  ]
                },
                "id": 9313,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mul",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9290,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9287,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "scope": 9313,
                      "src": "471:6:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9286,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "471:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9289,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "scope": 9313,
                      "src": "479:6:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9288,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "479:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "470:16:35"
                },
                "returnParameters": {
                  "id": 9293,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9292,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "scope": 9313,
                      "src": "510:6:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9291,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "510:4:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "509:8:35"
                },
                "scope": 9314,
                "src": "458:140:35",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 9315,
            "src": "170:430:35"
          }
        ],
        "src": "40:561:35"
      }
    },
    "contracts/libraries/TransferHelper.sol": {
      "id": 36,
      "AST": {
        "absolutePath": "contracts/libraries/TransferHelper.sol",
        "exportedSymbols": {
          "TransferHelper": [
            9474
          ]
        },
        "id": 9475,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9316,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:36"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "fullyImplemented": true,
            "id": 9474,
            "linearizedBaseContracts": [
              9474
            ],
            "name": "TransferHelper",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 9358,
                  "nodeType": "Block",
                  "src": "314:285:36",
                  "statements": [
                    {
                      "assignments": [
                        9326,
                        9328
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9326,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "scope": 9358,
                          "src": "390:12:36",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 9325,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "390:4:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 9328,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "scope": 9358,
                          "src": "404:17:36",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 9327,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "404:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9338,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "30783039356561376233",
                                "id": 9333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "459:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_157198259_by_1",
                                  "typeString": "int_const 157198259"
                                },
                                "value": "0x095ea7b3"
                              },
                              {
                                "id": 9334,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9320,
                                "src": "471:2:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 9335,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9322,
                                "src": "475:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_157198259_by_1",
                                  "typeString": "int_const 157198259"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 9331,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967295,
                                "src": "436:3:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "src": "436:22:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 9336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "436:45:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 9329,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9318,
                            "src": "425:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "src": "425:10:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 9337,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "425:57:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "389:93:36"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 9354,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9340,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9326,
                              "src": "500:7:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 9352,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9344,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 9341,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9328,
                                        "src": "512:4:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 9342,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "512:11:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 9343,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "527:1:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "512:16:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "id": 9347,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9328,
                                        "src": "543:4:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "components": [
                                          {
                                            "id": 9349,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "550:4:36",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 9348,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "550:4:36",
                                              "typeDescriptions": {}
                                            }
                                          }
                                        ],
                                        "id": 9350,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "549:6:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "id": 9345,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967295,
                                        "src": "532:3:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 9346,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "src": "532:10:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 9351,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "532:24:36",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "512:44:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 9353,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "511:46:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "500:57:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "5472616e7366657248656c7065723a20415050524f56455f4641494c4544",
                            "id": 9355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "559:32:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00",
                              "typeString": "literal_string \"TransferHelper: APPROVE_FAILED\""
                            },
                            "value": "TransferHelper: APPROVE_FAILED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00",
                              "typeString": "literal_string \"TransferHelper: APPROVE_FAILED\""
                            }
                          ],
                          "id": 9339,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "492:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "492:100:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9357,
                      "nodeType": "ExpressionStatement",
                      "src": "492:100:36"
                    }
                  ]
                },
                "id": 9359,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeApprove",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9323,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9318,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 9359,
                      "src": "242:13:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9317,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "242:7:36",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9320,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 9359,
                      "src": "265:10:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9319,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "265:7:36",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9322,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 9359,
                      "src": "285:13:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9321,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "285:7:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "232:72:36"
                },
                "returnParameters": {
                  "id": 9324,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "314:0:36"
                },
                "scope": 9474,
                "src": "212:387:36",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 9401,
                  "nodeType": "Block",
                  "src": "708:287:36",
                  "statements": [
                    {
                      "assignments": [
                        9369,
                        9371
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9369,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "scope": 9401,
                          "src": "785:12:36",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 9368,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "785:4:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 9371,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "scope": 9401,
                          "src": "799:17:36",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 9370,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "799:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9381,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "30786139303539636262",
                                "id": 9376,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "854:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2835717307_by_1",
                                  "typeString": "int_const 2835717307"
                                },
                                "value": "0xa9059cbb"
                              },
                              {
                                "id": 9377,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9363,
                                "src": "866:2:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 9378,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9365,
                                "src": "870:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2835717307_by_1",
                                  "typeString": "int_const 2835717307"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 9374,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967295,
                                "src": "831:3:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "src": "831:22:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 9379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "831:45:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 9372,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9361,
                            "src": "820:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "src": "820:10:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 9380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "820:57:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "784:93:36"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 9397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9383,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9369,
                              "src": "895:7:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 9395,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9387,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 9384,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9371,
                                        "src": "907:4:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 9385,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "907:11:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 9386,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "922:1:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "907:16:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "id": 9390,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9371,
                                        "src": "938:4:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "components": [
                                          {
                                            "id": 9392,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "945:4:36",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 9391,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "945:4:36",
                                              "typeDescriptions": {}
                                            }
                                          }
                                        ],
                                        "id": 9393,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "944:6:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "id": 9388,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967295,
                                        "src": "927:3:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 9389,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "src": "927:10:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 9394,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "927:24:36",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "907:44:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 9396,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "906:46:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "895:57:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "5472616e7366657248656c7065723a205452414e534645525f4641494c4544",
                            "id": 9398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "954:33:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426",
                              "typeString": "literal_string \"TransferHelper: TRANSFER_FAILED\""
                            },
                            "value": "TransferHelper: TRANSFER_FAILED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426",
                              "typeString": "literal_string \"TransferHelper: TRANSFER_FAILED\""
                            }
                          ],
                          "id": 9382,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "887:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9399,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "887:101:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9400,
                      "nodeType": "ExpressionStatement",
                      "src": "887:101:36"
                    }
                  ]
                },
                "id": 9402,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransfer",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9366,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9361,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 9402,
                      "src": "636:13:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9360,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "636:7:36",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9363,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 9402,
                      "src": "659:10:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9362,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "659:7:36",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9365,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 9402,
                      "src": "679:13:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9364,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "679:7:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "626:72:36"
                },
                "returnParameters": {
                  "id": 9367,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "708:0:36"
                },
                "scope": 9474,
                "src": "605:390:36",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 9447,
                  "nodeType": "Block",
                  "src": "1130:310:36",
                  "statements": [
                    {
                      "assignments": [
                        9414,
                        9416
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9414,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "scope": 9447,
                          "src": "1219:12:36",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 9413,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1219:4:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 9416,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "scope": 9447,
                          "src": "1233:17:36",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 9415,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1233:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9427,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "30783233623837326464",
                                "id": 9421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1288:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_599290589_by_1",
                                  "typeString": "int_const 599290589"
                                },
                                "value": "0x23b872dd"
                              },
                              {
                                "id": 9422,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9406,
                                "src": "1300:4:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 9423,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9408,
                                "src": "1306:2:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 9424,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9410,
                                "src": "1310:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_599290589_by_1",
                                  "typeString": "int_const 599290589"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 9419,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967295,
                                "src": "1265:3:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "src": "1265:22:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 9425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1265:51:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 9417,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9404,
                            "src": "1254:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "src": "1254:10:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 9426,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1254:63:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1218:99:36"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 9443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9429,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9414,
                              "src": "1335:7:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 9441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9433,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 9430,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9416,
                                        "src": "1347:4:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 9431,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "1347:11:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 9432,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1362:1:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1347:16:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "id": 9436,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9416,
                                        "src": "1378:4:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "components": [
                                          {
                                            "id": 9438,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1385:4:36",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 9437,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1385:4:36",
                                              "typeDescriptions": {}
                                            }
                                          }
                                        ],
                                        "id": 9439,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1384:6:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "id": 9434,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967295,
                                        "src": "1367:3:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 9435,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "src": "1367:10:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 9440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1367:24:36",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "1347:44:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 9442,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1346:46:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1335:57:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544",
                            "id": 9444,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1394:38:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18",
                              "typeString": "literal_string \"TransferHelper: TRANSFER_FROM_FAILED\""
                            },
                            "value": "TransferHelper: TRANSFER_FROM_FAILED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18",
                              "typeString": "literal_string \"TransferHelper: TRANSFER_FROM_FAILED\""
                            }
                          ],
                          "id": 9428,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "1327:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9445,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1327:106:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9446,
                      "nodeType": "ExpressionStatement",
                      "src": "1327:106:36"
                    }
                  ]
                },
                "id": 9448,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransferFrom",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9411,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9404,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 9448,
                      "src": "1036:13:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9403,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1036:7:36",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9406,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 9448,
                      "src": "1059:12:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9405,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1059:7:36",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9408,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 9448,
                      "src": "1081:10:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9407,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1081:7:36",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9410,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 9448,
                      "src": "1101:13:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9409,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1101:7:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1026:94:36"
                },
                "returnParameters": {
                  "id": 9412,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1130:0:36"
                },
                "scope": 9474,
                "src": "1001:439:36",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 9472,
                  "nodeType": "Block",
                  "src": "1507:136:36",
                  "statements": [
                    {
                      "assignments": [
                        9456,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9456,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "scope": 9472,
                          "src": "1518:12:36",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 9455,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1518:4:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 9466,
                      "initialValue": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 9463,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1568:1:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 9462,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1558:9:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory)"
                              },
                              "typeName": {
                                "id": 9461,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "1562:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              }
                            },
                            "id": 9464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1558:12:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 9457,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9450,
                              "src": "1536:2:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 9458,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "src": "1536:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 9460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "id": 9459,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9452,
                              "src": "1551:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "1536:21:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 9465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1536:35:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1517:54:36"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 9468,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9456,
                            "src": "1589:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "hexValue": "5472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544",
                            "id": 9469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1598:37:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d290720a9b119bbeaf8124eb771e119cbea85a2f430cbb39a8fead2398528881",
                              "typeString": "literal_string \"TransferHelper: ETH_TRANSFER_FAILED\""
                            },
                            "value": "TransferHelper: ETH_TRANSFER_FAILED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d290720a9b119bbeaf8124eb771e119cbea85a2f430cbb39a8fead2398528881",
                              "typeString": "literal_string \"TransferHelper: ETH_TRANSFER_FAILED\""
                            }
                          ],
                          "id": 9467,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            4294967278,
                            4294967278
                          ],
                          "referencedDeclaration": 4294967278,
                          "src": "1581:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9470,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1581:55:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9471,
                      "nodeType": "ExpressionStatement",
                      "src": "1581:55:36"
                    }
                  ]
                },
                "id": 9473,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransferETH",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9453,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9450,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 9473,
                      "src": "1471:10:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9449,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1471:7:36",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9452,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 9473,
                      "src": "1483:13:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9451,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1483:7:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "1470:27:36"
                },
                "returnParameters": {
                  "id": 9454,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1507:0:36"
                },
                "scope": 9474,
                "src": "1446:197:36",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 9475,
            "src": "183:1462:36"
          }
        ],
        "src": "46:1600:36"
      }
    },
    "contracts/libraries/UQ112x112.sol": {
      "id": 37,
      "AST": {
        "absolutePath": "contracts/libraries/UQ112x112.sol",
        "exportedSymbols": {
          "UQ112x112": [
            9518
          ]
        },
        "id": 9519,
        "license": "UNLICENSED",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9476,
            "literals": [
              "solidity",
              "=",
              "0.8",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "40:23:37"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "fullyImplemented": true,
            "id": 9518,
            "linearizedBaseContracts": [
              9518
            ],
            "name": "UQ112x112",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": true,
                "id": 9481,
                "mutability": "constant",
                "name": "Q112",
                "nodeType": "VariableDeclaration",
                "scope": 9518,
                "src": "246:30:37",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint224",
                  "typeString": "uint224"
                },
                "typeName": {
                  "id": 9477,
                  "name": "uint224",
                  "nodeType": "ElementaryTypeName",
                  "src": "246:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint224",
                    "typeString": "uint224"
                  }
                },
                "value": {
                  "commonType": {
                    "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                    "typeString": "int_const 5192...(26 digits omitted)...0096"
                  },
                  "id": 9480,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "hexValue": "32",
                    "id": 9478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "270:1:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "**",
                  "rightExpression": {
                    "hexValue": "313132",
                    "id": 9479,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "273:3:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_112_by_1",
                      "typeString": "int_const 112"
                    },
                    "value": "112"
                  },
                  "src": "270:6:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                    "typeString": "int_const 5192...(26 digits omitted)...0096"
                  }
                },
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 9497,
                  "nodeType": "Block",
                  "src": "383:57:37",
                  "statements": [
                    {
                      "expression": {
                        "id": 9495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 9488,
                          "name": "z",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9486,
                          "src": "393:1:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "commonType": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "id": 9494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 9491,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9483,
                                "src": "405:1:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "id": 9490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "397:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 9489,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "397:7:37",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9492,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "397:10:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 9493,
                            "name": "Q112",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9481,
                            "src": "410:4:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "src": "397:17:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "src": "393:21:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "id": 9496,
                      "nodeType": "ExpressionStatement",
                      "src": "393:21:37"
                    }
                  ]
                },
                "id": 9498,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "encode",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9484,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9483,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "scope": 9498,
                      "src": "338:9:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 9482,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "338:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "337:11:37"
                },
                "returnParameters": {
                  "id": 9487,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9486,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "scope": 9498,
                      "src": "372:9:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      },
                      "typeName": {
                        "id": 9485,
                        "name": "uint224",
                        "nodeType": "ElementaryTypeName",
                        "src": "372:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "371:11:37"
                },
                "scope": 9518,
                "src": "322:118:37",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 9516,
                  "nodeType": "Block",
                  "src": "579:35:37",
                  "statements": [
                    {
                      "expression": {
                        "id": 9514,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 9507,
                          "name": "z",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9505,
                          "src": "589:1:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "commonType": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "id": 9513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9508,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9500,
                            "src": "593:1:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 9511,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9502,
                                "src": "605:1:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "id": 9510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "597:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 9509,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "597:7:37",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "597:10:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "src": "593:14:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "src": "589:18:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "id": 9515,
                      "nodeType": "ExpressionStatement",
                      "src": "589:18:37"
                    }
                  ]
                },
                "id": 9517,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "uqdiv",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 9503,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9500,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "scope": 9517,
                      "src": "523:9:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      },
                      "typeName": {
                        "id": 9499,
                        "name": "uint224",
                        "nodeType": "ElementaryTypeName",
                        "src": "523:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9502,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "scope": 9517,
                      "src": "534:9:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 9501,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "534:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "522:22:37"
                },
                "returnParameters": {
                  "id": 9506,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9505,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "scope": 9517,
                      "src": "568:9:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      },
                      "typeName": {
                        "id": 9504,
                        "name": "uint224",
                        "nodeType": "ElementaryTypeName",
                        "src": "568:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "src": "567:11:37"
                },
                "scope": 9518,
                "src": "508:106:37",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 9519,
            "src": "222:394:37"
          }
        ],
        "src": "40:577:37"
      }
    }
  },
  "sourceList": [
    "contracts/MateriaLiquidityAdder.sol",
    "contracts/MateriaLiquidityRemover.sol",
    "contracts/MateriaOperator.sol",
    "contracts/MateriaOrchestrator.sol",
    "contracts/MateriaSwapper.sol",
    "contracts/examples/ExampleComputeLiquidityValue.sol",
    "contracts/examples/ExampleSwapToPrice.sol",
    "contracts/interfaces/IBaseTokenData.sol",
    "contracts/interfaces/IDoubleProxy.sol",
    "contracts/interfaces/IERC1155.sol",
    "contracts/interfaces/IERC1155Receiver.sol",
    "contracts/interfaces/IERC1155Views.sol",
    "contracts/interfaces/IERC165.sol",
    "contracts/interfaces/IERC20.sol",
    "contracts/interfaces/IERC20Data.sol",
    "contracts/interfaces/IERC20WrapperV1.sol",
    "contracts/interfaces/IERC721Receiver.sol",
    "contracts/interfaces/IEthItemInteroperableInterface.sol",
    "contracts/interfaces/IEthItemMainInterface.sol",
    "contracts/interfaces/IEthItemModelBase.sol",
    "contracts/interfaces/IEthItemOrchestrator.sol",
    "contracts/interfaces/IEthItemOrchestratorDependantElement.sol",
    "contracts/interfaces/IKnowledgeBase.sol",
    "contracts/interfaces/IMVDFunctionalitiesManager.sol",
    "contracts/interfaces/IMVDProxy.sol",
    "contracts/interfaces/IMateriaFactory.sol",
    "contracts/interfaces/IMateriaLiquidityRemover.sol",
    "contracts/interfaces/IMateriaOrchestrator.sol",
    "contracts/interfaces/IMateriaPair.sol",
    "contracts/interfaces/INativeV1.sol",
    "contracts/interfaces/IStateHolder.sol",
    "contracts/interfaces/IWETH.sol",
    "contracts/libraries/MateriaLibrary.sol",
    "contracts/libraries/MateriaLiquidityMathLibrary.sol",
    "contracts/libraries/Math.sol",
    "contracts/libraries/SafeMath.sol",
    "contracts/libraries/TransferHelper.sol",
    "contracts/libraries/UQ112x112.sol"
  ]
}