{
  "_format": "hh-sol-artifact-1",
  "contractName": "WrappedfCashMock",
  "sourceName": "contracts/mocks/WrappedfCashMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_assetToken",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "_underlyingToken",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "_weth",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAssetToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        },
        {
          "internalType": "enum TokenType",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDecodedID",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        },
        {
          "internalType": "uint40",
          "name": "",
          "type": "uint40"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMarketIndex",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "useUnderlying",
          "type": "bool"
        }
      ],
      "name": "getToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "isETH",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getUnderlyingToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getfCashId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "hasMatured",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_currencyId",
          "type": "uint16"
        },
        {
          "internalType": "uint40",
          "name": "_maturity",
          "type": "uint40"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mintTokenSpent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "depositAmountExternal",
          "type": "uint256"
        },
        {
          "internalType": "uint88",
          "name": "fCashAmount",
          "type": "uint88"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "name": "mintViaAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "depositAmountExternal",
          "type": "uint256"
        },
        {
          "internalType": "uint88",
          "name": "fCashAmount",
          "type": "uint88"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "name": "mintViaUnderlying",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "name": "redeemToAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "name": "redeemToUnderlying",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "redeemTokenReturned",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_matured",
          "type": "bool"
        }
      ],
      "name": "setMatured",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_mintTokenSpent",
          "type": "uint256"
        }
      ],
      "name": "setMintTokenSpent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_redeemTokenReturned",
          "type": "uint256"
        }
      ],
      "name": "setRedeemTokenReturned",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_revertDecodedID",
          "type": "bool"
        }
      ],
      "name": "setRevertDecodedID",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001975380380620019758339810160408190526200003491620001be565b6040518060400160405280600981526020016846436173684d6f636b60b81b8152506040518060400160405280600381526020016246434d60e81b81525081600390805190602001906200008a92919062000119565b508051620000a090600490602084019062000119565b50506005805460ff1916601217905550600980546001600160a01b039485166001600160a01b031990911617905560078054928416690100000000000000000002600160481b600160e81b031990931692909217909155600b80549190921661010002610100600160a81b03199091161790556200022a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200015c57805160ff19168380011785556200018c565b828001600101855582156200018c579182015b828111156200018c5782518255916020019190600101906200016f565b506200019a9291506200019e565b5090565b620001bb91905b808211156200019a5760008155600101620001a5565b90565b600080600060608486031215620001d3578283fd5b8351620001e08162000211565b6020850151909350620001f38162000211565b6040850151909250620002068162000211565b809150509250925092565b6001600160a01b03811681146200022757600080fd5b50565b61173b806200023a6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80635c9f063911610104578063a9059cbb116100a2578063e5d0830411610071578063e5d08304146103a7578063edfcd7be146103af578063ee719bc8146103c2578063f8eef10f146103d8576101cf565b8063a9059cbb14610366578063bbe9a40b14610379578063cb803ceb1461038c578063dd62ed3e14610394576101cf565b806391cdf056116100de57806391cdf0561461033b57806395d89b4114610343578063a10932951461034b578063a457c2d714610353576101cf565b80635c9f06391461030257806370a0823114610315578063745d08d914610328576101cf565b806329cf140511610171578063395093511161014b57806339509351146102a55780633d3192cb146102b857806348d8f98d146102cb57806351489551146102e1576101cf565b806329cf14051461026a578063313ce5671461027d57806339419a1414610292576101cf565b80630db8481c116101ad5780630db8481c14610227578063152b838c1461023c57806318160ddd1461024f57806323b872dd14610257576101cf565b80630558d500146101d457806306fdde03146101f2578063095ea7b314610207575b600080fd5b6101dc6103ef565b6040516101e99190611633565b60405180910390f35b6101fa6103f5565b6040516101e99190611390565b61021a6102153660046111a1565b61048b565b6040516101e9919061133b565b61023a61023536600461129f565b6104a9565b005b61023a61024a366004611203565b610589565b6101dc6105c6565b61021a610265366004611161565b6105cc565b61023a61027836600461129f565b610659565b6102856107e8565b6040516101e9919061163c565b61023a6102a03660046111cb565b6107f1565b61021a6102b33660046111a1565b610813565b61023a6102c6366004611262565b610867565b6102d361092e565b6040516101e9929190611618565b6102f46102ef3660046111cb565b61097c565b6040516101e9929190611346565b61023a6103103660046111cb565b6109b4565b6101dc610323366004611112565b6109d2565b61023a610336366004611262565b6109ed565b6101dc610b3f565b6101fa610b45565b61021a610ba6565b61021a6103613660046111a1565b610bb8565b61021a6103743660046111a1565b610c26565b61023a61038736600461124a565b610c3a565b610285610c3f565b6101dc6103a236600461112d565b610c54565b6101dc610c7f565b61023a6103bd36600461124a565b610c85565b6103ca610c8a565b6040516101e9929190611322565b6103e0610ca4565b6040516101e993929190611361565b60065490565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104815780601f1061045657610100808354040283529160200191610481565b820191906000526020600020905b81548152906001019060200180831161046457829003601f168201915b5050505050905090565b600061049f610498610cc1565b8484610cc5565b5060015b92915050565b6000600d546000146104bd57600d546104bf565b845b6009546040516323b872dd60e01b81529192506001600160a01b0316906323b872dd906104f4903390309086906004016112fe565b602060405180830381600087803b15801561050e57600080fd5b505af1158015610522573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054691906111e7565b61056b5760405162461bcd60e51b81526004016105629061149f565b60405180910390fd5b61058283856affffffffffffffffffffff16610d79565b5050505050565b6007805464ffffffffff90921664ffffffffff1961ffff90941666010000000000000267ffff000000000000199093169290921792909216179055565b60025490565b60006105d9848484610e45565b61064f846105e5610cc1565b61064a856040518060600160405280602881526020016116b9602891396001600160a01b038a16600090815260016020526040812090610623610cc1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff610f6616565b610cc5565b5060019392505050565b6000600d5460001461066d57600d5461066f565b845b600754909150600090600160481b90046001600160a01b031661071d57600b546040516323b872dd60e01b81526101009091046001600160a01b0316906323b872dd906106c4903390309087906004016112fe565b602060405180830381600087803b1580156106de57600080fd5b505af11580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071691906111e7565b90506107ac565b6007546040516323b872dd60e01b8152600160481b9091046001600160a01b0316906323b872dd90610757903390309087906004016112fe565b602060405180830381600087803b15801561077157600080fd5b505af1158015610785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a991906111e7565b90505b806107c95760405162461bcd60e51b81526004016105629061149f565b6107e084866affffffffffffffffffffff16610d79565b505050505050565b60055460ff1690565b60078054911515650100000000000265ff000000000019909216919091179055565b600061049f610820610cc1565b8461064a8560016000610831610cc1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610f9216565b6108713384610fbe565b6000600c5460001461088557600c54610887565b835b60095460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb906108ba9086908590600401611322565b602060405180830381600087803b1580156108d457600080fd5b505af11580156108e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090c91906111e7565b6109285760405162461bcd60e51b81526004016105629061149f565b50505050565b600b546000908190600160a81b900460ff161561095d5760405162461bcd60e51b815260040161056290611566565b505060075461ffff66010000000000008204169064ffffffffff169091565b60008082156109955761098d610c8a565b5091506109a3565b61099d610ca4565b50909250505b50916001600160a01b038316159150565b600b8054911515600160a81b0260ff60a81b19909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6109f73384610fbe565b6000600c54600014610a0b57600c54610a0d565b835b600754909150600160481b90046001600160a01b0316610ab557600b5460405163a9059cbb60e01b81526101009091046001600160a01b03169063a9059cbb90610a5d9086908590600401611322565b602060405180830381600087803b158015610a7757600080fd5b505af1158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf91906111e7565b50610928565b60075460405163a9059cbb60e01b8152600160481b9091046001600160a01b03169063a9059cbb90610aed9086908590600401611322565b602060405180830381600087803b158015610b0757600080fd5b505af1158015610b1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058291906111e7565b600d5481565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104815780601f1061045657610100808354040283529160200191610481565b60075465010000000000900460ff1690565b600061049f610bc5610cc1565b8461064a856040518060600160405280602581526020016116e16025913960016000610bef610cc1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610f6616565b600061049f610c33610cc1565b8484610e45565b600c55565b60075468010000000000000000900460ff1690565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600c5481565b600d55565b600754600854600160481b9091046001600160a01b031691565b600954600a54600b546001600160a01b039092169160ff16909192565b3390565b6001600160a01b038316610ceb5760405162461bcd60e51b81526004016105629061159d565b6001600160a01b038216610d115760405162461bcd60e51b815260040161056290611426565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d6c908590611633565b60405180910390a3505050565b6001600160a01b038216610d9f5760405162461bcd60e51b8152600401610562906115e1565b610dab600083836110a0565b600254610dbe908263ffffffff610f9216565b6002556001600160a01b038216600090815260208190526040902054610dea908263ffffffff610f9216565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e39908590611633565b60405180910390a35050565b6001600160a01b038316610e6b5760405162461bcd60e51b815260040161056290611521565b6001600160a01b038216610e915760405162461bcd60e51b8152600401610562906113e3565b610e9c8383836110a0565b610edf81604051806060016040528060268152602001611693602691396001600160a01b038616600090815260208190526040902054919063ffffffff610f6616565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610f14908263ffffffff610f9216565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d6c908590611633565b60008184841115610f8a5760405162461bcd60e51b81526004016105629190611390565b505050900390565b600082820183811015610fb75760405162461bcd60e51b815260040161056290611468565b9392505050565b6001600160a01b038216610fe45760405162461bcd60e51b8152600401610562906114e0565b610ff0826000836110a0565b61103381604051806060016040528060228152602001611671602291396001600160a01b038516600090815260208190526040902054919063ffffffff610f6616565b6001600160a01b03831660009081526020819052604090205560025461105f908263ffffffff6110a516565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e39908590611633565b505050565b6000610fb783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f66565b80356001600160a01b03811681146104a357600080fd5b803563ffffffff811681146104a357600080fd5b600060208284031215611123578081fd5b610fb783836110e7565b6000806040838503121561113f578081fd5b61114984846110e7565b915061115884602085016110e7565b90509250929050565b600080600060608486031215611175578081fd5b83356111808161164a565b925060208401356111908161164a565b929592945050506040919091013590565b600080604083850312156111b3578182fd5b6111bd84846110e7565b946020939093013593505050565b6000602082840312156111dc578081fd5b8135610fb781611662565b6000602082840312156111f8578081fd5b8151610fb781611662565b60008060408385031215611215578182fd5b823561ffff81168114611226578283fd5b9150602083013564ffffffffff8116811461123f578182fd5b809150509250929050565b60006020828403121561125b578081fd5b5035919050565b600080600060608486031215611276578283fd5b8335925061128785602086016110e7565b915061129685604086016110fe565b90509250925092565b600080600080608085870312156112b4578081fd5b8435935060208501356affffffffffffffffffffff811681146112d5578182fd5b92506112e486604087016110e7565b91506112f386606087016110fe565b905092959194509250565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b038416815260208101839052606081016005831061138257fe5b826040830152949350505050565b6000602080835283518082850152825b818110156113bc578581018301518582016040015282016113a0565b818111156113cd5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f5772617070656466436173684d6f636b3a205472616e73666572206661696c656040820152601960fa1b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526018908201527f5465737420726576657274696f6e204465636f64656449440000000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b61ffff92909216825264ffffffffff16602082015260400190565b90815260200190565b60ff91909116815260200190565b6001600160a01b038116811461165f57600080fd5b50565b801515811461165f57600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220adc75b69457cf92e30fcc39b51faab3ade6b8e52aa5e492acb96c5fe6d1611b564736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80635c9f063911610104578063a9059cbb116100a2578063e5d0830411610071578063e5d08304146103a7578063edfcd7be146103af578063ee719bc8146103c2578063f8eef10f146103d8576101cf565b8063a9059cbb14610366578063bbe9a40b14610379578063cb803ceb1461038c578063dd62ed3e14610394576101cf565b806391cdf056116100de57806391cdf0561461033b57806395d89b4114610343578063a10932951461034b578063a457c2d714610353576101cf565b80635c9f06391461030257806370a0823114610315578063745d08d914610328576101cf565b806329cf140511610171578063395093511161014b57806339509351146102a55780633d3192cb146102b857806348d8f98d146102cb57806351489551146102e1576101cf565b806329cf14051461026a578063313ce5671461027d57806339419a1414610292576101cf565b80630db8481c116101ad5780630db8481c14610227578063152b838c1461023c57806318160ddd1461024f57806323b872dd14610257576101cf565b80630558d500146101d457806306fdde03146101f2578063095ea7b314610207575b600080fd5b6101dc6103ef565b6040516101e99190611633565b60405180910390f35b6101fa6103f5565b6040516101e99190611390565b61021a6102153660046111a1565b61048b565b6040516101e9919061133b565b61023a61023536600461129f565b6104a9565b005b61023a61024a366004611203565b610589565b6101dc6105c6565b61021a610265366004611161565b6105cc565b61023a61027836600461129f565b610659565b6102856107e8565b6040516101e9919061163c565b61023a6102a03660046111cb565b6107f1565b61021a6102b33660046111a1565b610813565b61023a6102c6366004611262565b610867565b6102d361092e565b6040516101e9929190611618565b6102f46102ef3660046111cb565b61097c565b6040516101e9929190611346565b61023a6103103660046111cb565b6109b4565b6101dc610323366004611112565b6109d2565b61023a610336366004611262565b6109ed565b6101dc610b3f565b6101fa610b45565b61021a610ba6565b61021a6103613660046111a1565b610bb8565b61021a6103743660046111a1565b610c26565b61023a61038736600461124a565b610c3a565b610285610c3f565b6101dc6103a236600461112d565b610c54565b6101dc610c7f565b61023a6103bd36600461124a565b610c85565b6103ca610c8a565b6040516101e9929190611322565b6103e0610ca4565b6040516101e993929190611361565b60065490565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104815780601f1061045657610100808354040283529160200191610481565b820191906000526020600020905b81548152906001019060200180831161046457829003601f168201915b5050505050905090565b600061049f610498610cc1565b8484610cc5565b5060015b92915050565b6000600d546000146104bd57600d546104bf565b845b6009546040516323b872dd60e01b81529192506001600160a01b0316906323b872dd906104f4903390309086906004016112fe565b602060405180830381600087803b15801561050e57600080fd5b505af1158015610522573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054691906111e7565b61056b5760405162461bcd60e51b81526004016105629061149f565b60405180910390fd5b61058283856affffffffffffffffffffff16610d79565b5050505050565b6007805464ffffffffff90921664ffffffffff1961ffff90941666010000000000000267ffff000000000000199093169290921792909216179055565b60025490565b60006105d9848484610e45565b61064f846105e5610cc1565b61064a856040518060600160405280602881526020016116b9602891396001600160a01b038a16600090815260016020526040812090610623610cc1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff610f6616565b610cc5565b5060019392505050565b6000600d5460001461066d57600d5461066f565b845b600754909150600090600160481b90046001600160a01b031661071d57600b546040516323b872dd60e01b81526101009091046001600160a01b0316906323b872dd906106c4903390309087906004016112fe565b602060405180830381600087803b1580156106de57600080fd5b505af11580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071691906111e7565b90506107ac565b6007546040516323b872dd60e01b8152600160481b9091046001600160a01b0316906323b872dd90610757903390309087906004016112fe565b602060405180830381600087803b15801561077157600080fd5b505af1158015610785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a991906111e7565b90505b806107c95760405162461bcd60e51b81526004016105629061149f565b6107e084866affffffffffffffffffffff16610d79565b505050505050565b60055460ff1690565b60078054911515650100000000000265ff000000000019909216919091179055565b600061049f610820610cc1565b8461064a8560016000610831610cc1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610f9216565b6108713384610fbe565b6000600c5460001461088557600c54610887565b835b60095460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb906108ba9086908590600401611322565b602060405180830381600087803b1580156108d457600080fd5b505af11580156108e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090c91906111e7565b6109285760405162461bcd60e51b81526004016105629061149f565b50505050565b600b546000908190600160a81b900460ff161561095d5760405162461bcd60e51b815260040161056290611566565b505060075461ffff66010000000000008204169064ffffffffff169091565b60008082156109955761098d610c8a565b5091506109a3565b61099d610ca4565b50909250505b50916001600160a01b038316159150565b600b8054911515600160a81b0260ff60a81b19909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6109f73384610fbe565b6000600c54600014610a0b57600c54610a0d565b835b600754909150600160481b90046001600160a01b0316610ab557600b5460405163a9059cbb60e01b81526101009091046001600160a01b03169063a9059cbb90610a5d9086908590600401611322565b602060405180830381600087803b158015610a7757600080fd5b505af1158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf91906111e7565b50610928565b60075460405163a9059cbb60e01b8152600160481b9091046001600160a01b03169063a9059cbb90610aed9086908590600401611322565b602060405180830381600087803b158015610b0757600080fd5b505af1158015610b1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058291906111e7565b600d5481565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104815780601f1061045657610100808354040283529160200191610481565b60075465010000000000900460ff1690565b600061049f610bc5610cc1565b8461064a856040518060600160405280602581526020016116e16025913960016000610bef610cc1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610f6616565b600061049f610c33610cc1565b8484610e45565b600c55565b60075468010000000000000000900460ff1690565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600c5481565b600d55565b600754600854600160481b9091046001600160a01b031691565b600954600a54600b546001600160a01b039092169160ff16909192565b3390565b6001600160a01b038316610ceb5760405162461bcd60e51b81526004016105629061159d565b6001600160a01b038216610d115760405162461bcd60e51b815260040161056290611426565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d6c908590611633565b60405180910390a3505050565b6001600160a01b038216610d9f5760405162461bcd60e51b8152600401610562906115e1565b610dab600083836110a0565b600254610dbe908263ffffffff610f9216565b6002556001600160a01b038216600090815260208190526040902054610dea908263ffffffff610f9216565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e39908590611633565b60405180910390a35050565b6001600160a01b038316610e6b5760405162461bcd60e51b815260040161056290611521565b6001600160a01b038216610e915760405162461bcd60e51b8152600401610562906113e3565b610e9c8383836110a0565b610edf81604051806060016040528060268152602001611693602691396001600160a01b038616600090815260208190526040902054919063ffffffff610f6616565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610f14908263ffffffff610f9216565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d6c908590611633565b60008184841115610f8a5760405162461bcd60e51b81526004016105629190611390565b505050900390565b600082820183811015610fb75760405162461bcd60e51b815260040161056290611468565b9392505050565b6001600160a01b038216610fe45760405162461bcd60e51b8152600401610562906114e0565b610ff0826000836110a0565b61103381604051806060016040528060228152602001611671602291396001600160a01b038516600090815260208190526040902054919063ffffffff610f6616565b6001600160a01b03831660009081526020819052604090205560025461105f908263ffffffff6110a516565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e39908590611633565b505050565b6000610fb783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f66565b80356001600160a01b03811681146104a357600080fd5b803563ffffffff811681146104a357600080fd5b600060208284031215611123578081fd5b610fb783836110e7565b6000806040838503121561113f578081fd5b61114984846110e7565b915061115884602085016110e7565b90509250929050565b600080600060608486031215611175578081fd5b83356111808161164a565b925060208401356111908161164a565b929592945050506040919091013590565b600080604083850312156111b3578182fd5b6111bd84846110e7565b946020939093013593505050565b6000602082840312156111dc578081fd5b8135610fb781611662565b6000602082840312156111f8578081fd5b8151610fb781611662565b60008060408385031215611215578182fd5b823561ffff81168114611226578283fd5b9150602083013564ffffffffff8116811461123f578182fd5b809150509250929050565b60006020828403121561125b578081fd5b5035919050565b600080600060608486031215611276578283fd5b8335925061128785602086016110e7565b915061129685604086016110fe565b90509250925092565b600080600080608085870312156112b4578081fd5b8435935060208501356affffffffffffffffffffff811681146112d5578182fd5b92506112e486604087016110e7565b91506112f386606087016110fe565b905092959194509250565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b038416815260208101839052606081016005831061138257fe5b826040830152949350505050565b6000602080835283518082850152825b818110156113bc578581018301518582016040015282016113a0565b818111156113cd5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f5772617070656466436173684d6f636b3a205472616e73666572206661696c656040820152601960fa1b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526018908201527f5465737420726576657274696f6e204465636f64656449440000000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b61ffff92909216825264ffffffffff16602082015260400190565b90815260200190565b60ff91909116815260200190565b6001600160a01b038116811461165f57600080fd5b50565b801515811461165f57600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220adc75b69457cf92e30fcc39b51faab3ade6b8e52aa5e492acb96c5fe6d1611b564736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
