{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockPendleOwnershipToken",
  "sourceName": "contracts/mock/MockPendleOwnershipToken.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_underlyingAsset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_underlyingYieldToken",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "_underlyingYieldTokenDecimals",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "_start",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_expiry",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "initialAccount",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "initialBalance",
          "type": "uint256"
        }
      ],
      "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": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "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": "PERMIT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "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": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approveInternal",
      "outputs": [],
      "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": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "expiry",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "forge",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": "address",
          "name": "user",
          "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": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "nonces",
      "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": "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": "router",
      "outputs": [
        {
          "internalType": "contract IPendleRouter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "start",
      "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"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferInternal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "underlyingAsset",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "underlyingYieldToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6101606040523480156200001257600080fd5b5060405162001b9b38038062001b9b83398181016040526101208110156200003957600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200006557600080fd5b9083019060208201858111156200007b57600080fd5b82516401000000008111828201881017156200009657600080fd5b82525081516020918201929091019080838360005b83811015620000c5578181015183820152602001620000ab565b50505050905090810190601f168015620000f35780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011757600080fd5b9083019060208201858111156200012d57600080fd5b82516401000000008111828201881017156200014857600080fd5b82525081516020918201929091019080838360005b83811015620001775781810151838201526020016200015d565b50505050905090810190601f168015620001a55780820380516001836020036101000a031916815260200191505b506040908152602082810151918301516060840151608085015160a090950151895194975091955093929091339182918c918c918c918c918c918c918c91899187918791879187918791869186916200020591600391908501906200056f565b5080516200021b9060049060208401906200056f565b50506005805460ff19166012179055506200023683620003e3565b608091825260a09081526001600160601b0319606096871b1660c0908152855160209687012060408051808201825260018152603160f81b9089015280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818a0152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6988201989098524693810193909352308383015286518084039092018252919091019094525050815191012060e0526001600160a01b038716158015906200031157506001600160a01b03861615155b62000352576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b6001600160a01b0388166200039d576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b5050506001600160601b0319606095861b81166101005293851b841661012052505090911b166101405250620003d48282620003f9565b5050505050505050506200061b565b6005805460ff191660ff92909216919091179055565b6001600160a01b03821662000455576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620004636000838362000508565b6200047f816002546200050d60201b62000c491790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620004b291839062000c496200050d821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282018381101562000568576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620005a75760008555620005f2565b82601f10620005c257805160ff1916838001178555620005f2565b82800160010185558215620005f2579182015b82811115620005f2578251825591602001919060010190620005d5565b506200060092915062000604565b5090565b5b8082111562000600576000815560010162000605565b60805160a05160c05160601c60e0516101005160601c6101205160601c6101405160601c6115116200068a60003980610bdf52508061080e52508061071652806107cf52806108ae52508061069b5280610ad6525080610c27525080610c035250806109d852506115116000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e146104d6578063ddf0fa8314610504578063e184c9be1461050c578063f887ea401461051457610173565b8063a9059cbb14610451578063be9a65551461047d578063d505accf1461048557610173565b806370a082311461039d5780637158da7c146103c35780637ecebe00146103cb57806395d89b41146103f15780639dc29fac146103f9578063a457c2d71461042557610173565b8063313ce56711610130578063313ce567146102c55780633644e515146102e357806339509351146102eb57806340c10f191461031757806356189cb4146103435780636c6f42391461037957610173565b806306fdde0314610178578063095ea7b3146101f557806318160ddd14610235578063222f5be01461024f57806323b872dd1461028757806330adf81f146102bd575b600080fd5b61018061051c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b0381351690602001356105b2565b604080519115158252519081900360200190f35b61023d6105cf565b60408051918252519081900360200190f35b6102856004803603606081101561026557600080fd5b506001600160a01b038135811691602081013590911690604001356105d5565b005b6102216004803603606081101561029d57600080fd5b506001600160a01b038135811691602081013590911690604001356105e5565b61023d61066c565b6102cd610690565b6040805160ff9092168252519081900360200190f35b61023d610699565b6102216004803603604081101561030157600080fd5b506001600160a01b0381351690602001356106bd565b6102856004803603604081101561032d57600080fd5b506001600160a01b03813516906020013561070b565b6102856004803603606081101561035957600080fd5b506001600160a01b038135811691602081013590911690604001356107c2565b6103816107cd565b604080516001600160a01b039092168252519081900360200190f35b61023d600480360360208110156103b357600080fd5b50356001600160a01b03166107f1565b61038161080c565b61023d600480360360208110156103e157600080fd5b50356001600160a01b0316610830565b610180610842565b6102856004803603604081101561040f57600080fd5b506001600160a01b0381351690602001356108a3565b6102216004803603604081101561043b57600080fd5b506001600160a01b03813516906020013561095a565b6102216004803603604081101561046757600080fd5b506001600160a01b0381351690602001356109c2565b61023d6109d6565b610285600480360360e081101561049b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356109fa565b61023d600480360360408110156104ec57600080fd5b506001600160a01b0381358116916020013516610bb2565b610381610bdd565b61023d610c01565b610381610c25565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b5050505050905090565b60006105c66105bf610caa565b8484610cae565b50600192915050565b60025490565b6105e0838383610d9a565b505050565b60006105f2848484610d9a565b610662846105fe610caa565b61065d85604051806060016040528060288152602001611425602891396001600160a01b038a1660009081526001602052604081209061063c610caa565b6001600160a01b031681526020810191909152604001600020549190610ef5565b610cae565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006105c66106ca610caa565b8461065d85600160006106db610caa565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610c49565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610775576040805162461bcd60e51b815260206004820152600a6024820152694f4e4c595f464f52474560b01b604482015290519081900360640190fd5b61077f8282610f8c565b6040805182815290516001600160a01b038416917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a25050565b6105e0838383610cae565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b031660009081526020819052604090205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b60066020526000908152604090205481565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105a85780601f1061057d576101008083540402835291602001916105a8565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461090d576040805162461bcd60e51b815260206004820152600a6024820152694f4e4c595f464f52474560b01b604482015290519081900360640190fd5b610917828261107c565b6040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b60006105c6610967610caa565b8461065d856040518060600160405280602581526020016114b76025913960016000610991610caa565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610ef5565b60006105c66109cf610caa565b8484610d9a565b7f000000000000000000000000000000000000000000000000000000000000000081565b42841015610a40576040805162461bcd60e51b815260206004820152600e60248201526d14115493525517d156141254915160921b604482015290519081900360640190fd5b6001600160a01b03808816600081815260066020908152604080832080546001810190915581517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e08401855280519082012061190160f01b6101008501527f000000000000000000000000000000000000000000000000000000000000000061010285015261012280850191909152845180850390910181526101429093019093528151919092012090610b2c82868686611178565b90506001600160a01b03811615801590610b575750886001600160a01b0316816001600160a01b0316145b610b9c576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b610ba7898989610cae565b505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082820183811015610ca3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b038316610cf35760405162461bcd60e51b81526004018080602001828103825260248152602001806114936024913960400191505060405180910390fd5b6001600160a01b038216610d385760405162461bcd60e51b81526004018080602001828103825260228152602001806113996022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610ddf5760405162461bcd60e51b815260040180806020018281038252602581526020018061146e6025913960400191505060405180910390fd5b6001600160a01b038216610e245760405162461bcd60e51b81526004018080602001828103825260238152602001806113546023913960400191505060405180910390fd5b610e2f8383836105e0565b610e6c816040518060600160405280602681526020016113bb602691396001600160a01b0386166000908152602081905260409020549190610ef5565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610e9b9082610c49565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610f845760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f49578181015183820152602001610f31565b50505050905090810190601f168015610f765780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216610fe7576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610ff3600083836105e0565b6002546110009082610c49565b6002556001600160a01b0382166000908152602081905260409020546110269082610c49565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166110c15760405162461bcd60e51b815260040180806020018281038252602181526020018061144d6021913960400191505060405180910390fd5b6110cd826000836105e0565b61110a81604051806060016040528060228152602001611377602291396001600160a01b0385166000908152602081905260409020549190610ef5565b6001600160a01b03831660009081526020819052604090205560025461113090826112f6565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156111d95760405162461bcd60e51b81526004018080602001828103825260228152602001806113e16022913960400191505060405180910390fd5b8360ff16601b14806111ee57508360ff16601c145b6112295760405162461bcd60e51b81526004018080602001828103825260228152602001806114036022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611285573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166112ed576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b60008282111561134d576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122028b0b4b5872fa7549e69b7b6695af15ff32fb6c3a0a6458b322b8df6ee0e72e964736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e146104d6578063ddf0fa8314610504578063e184c9be1461050c578063f887ea401461051457610173565b8063a9059cbb14610451578063be9a65551461047d578063d505accf1461048557610173565b806370a082311461039d5780637158da7c146103c35780637ecebe00146103cb57806395d89b41146103f15780639dc29fac146103f9578063a457c2d71461042557610173565b8063313ce56711610130578063313ce567146102c55780633644e515146102e357806339509351146102eb57806340c10f191461031757806356189cb4146103435780636c6f42391461037957610173565b806306fdde0314610178578063095ea7b3146101f557806318160ddd14610235578063222f5be01461024f57806323b872dd1461028757806330adf81f146102bd575b600080fd5b61018061051c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b0381351690602001356105b2565b604080519115158252519081900360200190f35b61023d6105cf565b60408051918252519081900360200190f35b6102856004803603606081101561026557600080fd5b506001600160a01b038135811691602081013590911690604001356105d5565b005b6102216004803603606081101561029d57600080fd5b506001600160a01b038135811691602081013590911690604001356105e5565b61023d61066c565b6102cd610690565b6040805160ff9092168252519081900360200190f35b61023d610699565b6102216004803603604081101561030157600080fd5b506001600160a01b0381351690602001356106bd565b6102856004803603604081101561032d57600080fd5b506001600160a01b03813516906020013561070b565b6102856004803603606081101561035957600080fd5b506001600160a01b038135811691602081013590911690604001356107c2565b6103816107cd565b604080516001600160a01b039092168252519081900360200190f35b61023d600480360360208110156103b357600080fd5b50356001600160a01b03166107f1565b61038161080c565b61023d600480360360208110156103e157600080fd5b50356001600160a01b0316610830565b610180610842565b6102856004803603604081101561040f57600080fd5b506001600160a01b0381351690602001356108a3565b6102216004803603604081101561043b57600080fd5b506001600160a01b03813516906020013561095a565b6102216004803603604081101561046757600080fd5b506001600160a01b0381351690602001356109c2565b61023d6109d6565b610285600480360360e081101561049b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356109fa565b61023d600480360360408110156104ec57600080fd5b506001600160a01b0381358116916020013516610bb2565b610381610bdd565b61023d610c01565b610381610c25565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b5050505050905090565b60006105c66105bf610caa565b8484610cae565b50600192915050565b60025490565b6105e0838383610d9a565b505050565b60006105f2848484610d9a565b610662846105fe610caa565b61065d85604051806060016040528060288152602001611425602891396001600160a01b038a1660009081526001602052604081209061063c610caa565b6001600160a01b031681526020810191909152604001600020549190610ef5565b610cae565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006105c66106ca610caa565b8461065d85600160006106db610caa565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610c49565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610775576040805162461bcd60e51b815260206004820152600a6024820152694f4e4c595f464f52474560b01b604482015290519081900360640190fd5b61077f8282610f8c565b6040805182815290516001600160a01b038416917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a25050565b6105e0838383610cae565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b031660009081526020819052604090205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b60066020526000908152604090205481565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105a85780601f1061057d576101008083540402835291602001916105a8565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461090d576040805162461bcd60e51b815260206004820152600a6024820152694f4e4c595f464f52474560b01b604482015290519081900360640190fd5b610917828261107c565b6040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b60006105c6610967610caa565b8461065d856040518060600160405280602581526020016114b76025913960016000610991610caa565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610ef5565b60006105c66109cf610caa565b8484610d9a565b7f000000000000000000000000000000000000000000000000000000000000000081565b42841015610a40576040805162461bcd60e51b815260206004820152600e60248201526d14115493525517d156141254915160921b604482015290519081900360640190fd5b6001600160a01b03808816600081815260066020908152604080832080546001810190915581517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e08401855280519082012061190160f01b6101008501527f000000000000000000000000000000000000000000000000000000000000000061010285015261012280850191909152845180850390910181526101429093019093528151919092012090610b2c82868686611178565b90506001600160a01b03811615801590610b575750886001600160a01b0316816001600160a01b0316145b610b9c576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b610ba7898989610cae565b505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082820183811015610ca3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b038316610cf35760405162461bcd60e51b81526004018080602001828103825260248152602001806114936024913960400191505060405180910390fd5b6001600160a01b038216610d385760405162461bcd60e51b81526004018080602001828103825260228152602001806113996022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610ddf5760405162461bcd60e51b815260040180806020018281038252602581526020018061146e6025913960400191505060405180910390fd5b6001600160a01b038216610e245760405162461bcd60e51b81526004018080602001828103825260238152602001806113546023913960400191505060405180910390fd5b610e2f8383836105e0565b610e6c816040518060600160405280602681526020016113bb602691396001600160a01b0386166000908152602081905260409020549190610ef5565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610e9b9082610c49565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610f845760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f49578181015183820152602001610f31565b50505050905090810190601f168015610f765780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216610fe7576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610ff3600083836105e0565b6002546110009082610c49565b6002556001600160a01b0382166000908152602081905260409020546110269082610c49565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166110c15760405162461bcd60e51b815260040180806020018281038252602181526020018061144d6021913960400191505060405180910390fd5b6110cd826000836105e0565b61110a81604051806060016040528060228152602001611377602291396001600160a01b0385166000908152602081905260409020549190610ef5565b6001600160a01b03831660009081526020819052604090205560025461113090826112f6565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156111d95760405162461bcd60e51b81526004018080602001828103825260228152602001806113e16022913960400191505060405180910390fd5b8360ff16601b14806111ee57508360ff16601c145b6112295760405162461bcd60e51b81526004018080602001828103825260228152602001806114036022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611285573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166112ed576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b60008282111561134d576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122028b0b4b5872fa7549e69b7b6695af15ff32fb6c3a0a6458b322b8df6ee0e72e964736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
