[ { "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": true, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "mintAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "mintTokens", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "redeemer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "redeemAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "redeemTokens", "type": "uint256" } ], "name": "Redeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "reward", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "bounty", "type": "uint256" } ], "name": "Reinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "totalBalance", "type": "uint256" } ], "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" }, { "constant": true, "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "MINIMUM_LIQUIDITY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "REINVEST_BOUNTY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "WETH", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_stakingRewards", "type": "address" }, { "internalType": "address", "name": "_underlying", "type": "address" }, { "internalType": "address", "name": "_rewardsToken", "type": "address" }, { "internalType": "address", "name": "_token0", "type": "address" }, { "internalType": "address", "name": "_token1", "type": "address" }, { "internalType": "address", "name": "_router", "type": "address" }, { "internalType": "address", "name": "_WETH", "type": "address" } ], "name": "_initialize", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "_setFactory", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "exchangeRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getReserves", "outputs": [ { "internalType": "uint112", "name": "reserve0", "type": "uint112" }, { "internalType": "uint112", "name": "reserve1", "type": "uint112" }, { "internalType": "uint32", "name": "blockTimestampLast", "type": "uint32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "isStakedLPToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "mintTokens", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "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": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "price0CumulativeLast", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "price1CumulativeLast", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "redeemer", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "redeemAmount", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "reinvest", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "rewardsToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "router", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "skim", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "stakingRewards", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "sync", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "token0", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "token1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "totalBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "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" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "underlying", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" } ]
60806040526002805460ff19908116601217909155600b805490911660011790556137488061002f6000396000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c80636f307dc311610145578063bc25cf77116100bd578063d505accf1161008c578063f887ea4011610071578063f887ea40146106d6578063fdb5a03e146106de578063fff6cae9146106e65761025c565b8063d505accf1461063d578063dd62ed3e1461069b5761025c565b8063bc25cf77146105f2578063c45a015514610625578063d1af0c7d1461062d578063d21220a7146106355761025c565b806395d89b4111610114578063ad5c4648116100f9578063ad5c4648146105da578063ad7a672f146105e2578063ba9a7a56146105ea5761025c565b806395d89b4114610599578063a9059cbb146105a15761025c565b80636f307dc3146104f857806370a08231146105005780637ecebe001461053357806395a2251f146105665761025c565b80633644e515116101d85780635909c0d5116101a757806364b87a701161018c57806364b87a70146104b55780636a627842146104bd5780636c2a3bc5146104f05761025c565b80635909c0d5146104a55780635a3d5493146104ad5761025c565b80633644e515146104265780633ba0b9a91461042e578063439e2740146104365780634a5d316c1461049d5761025c565b80630dfe16811161022f57806323b872dd1161021457806323b872dd146103bd57806330adf81f14610400578063313ce567146104085761025c565b80630dfe16811461037257806318160ddd146103a35761025c565b806306fdde03146102615780630902f1ac146102de578063095ea7b31461031d5780630a6410631461036a575b600080fd5b6102696106ee565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a357818101518382015260200161028b565b50505050905090810190601f1680156102d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e661079a565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b6103566004803603604081101561033357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109e0565b604080519115158252519081900360200190f35b6103566109f7565b61037a6109fc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6103ab610a18565b60408051918252519081900360200190f35b610356600480360360608110156103d357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610a1e565b6103ab610b32565b610410610b56565b6040805160ff9092168252519081900360200190f35b6103ab610b5f565b6103ab610b65565b61049b600480360360e081101561044c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201358116916060810135821691608082013581169160a081013582169160c09091013516610bb5565b005b61049b610e3f565b6103ab610ef0565b6103ab610f8c565b61037a610ff7565b6103ab600480360360208110156104d357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611018565b6103ab6112aa565b61037a6112b5565b6103ab6004803603602081101561051657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166112d1565b6103ab6004803603602081101561054957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166112e3565b6103ab6004803603602081101561057c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166112f5565b61026961157a565b610356600480360360408110156105b757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356115f2565b61037a6115ff565b6103ab61161b565b6103ab611621565b61049b6004803603602081101561060857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611627565b61037a6117aa565b61037a6117c6565b61037a6117e2565b61049b600480360360e081101561065357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356117fe565b6103ab600480360360408110156106b157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611839565b61037a611856565b61049b611872565b61049b611e7e565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107925780601f1061076757610100808354040283529160200191610792565b820191906000526020600020905b81548152906001019060200180831161077557829003601f168201915b505050505081565b6000806000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561080757600080fd5b505afa15801561081b573d6000803e3d6000fd5b505050506040513d606081101561083157600080fd5b5080516020820151604090920151600354919550919350909150610854576109db565b600a54600854604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916318160ddd916004808301926020929190829003018186803b1580156108c257600080fd5b505afa1580156108d6573d6000803e3d6000fd5b505050506040513d60208110156108ec57600080fd5b5051905061092861092382610917856dffffffffffffffffffffffffffff8a1663ffffffff611f1f16565b9063ffffffff611f9916565b611fdb565b945061095161092382610917856dffffffffffffffffffffffffffff891663ffffffff611f1f16565b93506064856dffffffffffffffffffffffffffff1611801561098357506064846dffffffffffffffffffffffffffff16115b6109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806136366026913960400191505060405180910390fd5b50505b909192565b60006109ed338484612062565b5060015b92915050565b600181565b600f5473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610b1d57604080518082018252601e81527f496d7065726d61783a205452414e534645525f4e4f545f414c4c4f574544000060208083019190915273ffffffffffffffffffffffffffffffffffffffff87166000908152600582528381203382529091529190912054610aeb91849063ffffffff6120d116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602090815260408083203384529091529020555b610b28848484612182565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025460ff1681565b60065481565b600354600a5460009190811580610b7a575080155b15610b9157670de0b6b3a764000092505050610bb2565b610bad8261091783670de0b6b3a764000063ffffffff611f1f16565b925050505b90565b60095473ffffffffffffffffffffffffffffffffffffffff1615610c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806136126024913960400191505060405180910390fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055604080518082018252601181527f5374616b656420556e69737761702056320000000000000000000000000000006020808301919091528251808401909352600b83527f53544b442d554e492d563200000000000000000000000000000000000000000090830152610cbf9161229b565b600b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8a81169190910291909117909155600880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811689841617909155600c80548216888416908117909155600f80548316888516179055601080548316878516179055600d80548316868516179055600e8054909216928416929092179055610da890837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61237f565b610def73ffffffffffffffffffffffffffffffffffffffff8216837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61237f16565b610e3673ffffffffffffffffffffffffffffffffffffffff8716887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61237f16565b50505050505050565b60095473ffffffffffffffffffffffffffffffffffffffff1615610ec457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496d7065726d61783a20464143544f52595f414c52454144595f534554000000604482015290519081900360640190fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055565b600854604080517f5909c0d5000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635909c0d5916004808301926020929190829003018186803b158015610f5b57600080fd5b505afa158015610f6f573d6000803e3d6000fd5b505050506040513d6020811015610f8557600080fd5b5051905090565b600854604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635a3d5493916004808301926020929190829003018186803b158015610f5b57600080fd5b600b54610100900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5460009060ff1661108c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556008546000906110d99073ffffffffffffffffffffffffffffffffffffffff1661255c565b9050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a694fc3a826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561115057600080fd5b505af1158015611164573d6000803e3d6000fd5b5050505061118b611173610b65565b61091783670de0b6b3a764000063ffffffff611f1f16565b9150600354600014156111b9576111aa826103e863ffffffff6125fe16565b91506111b960006103e8612640565b60008211611212576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806135f16021913960400191505060405180910390fd5b61121c8383612640565b6040805182815260208101849052815173ffffffffffffffffffffffffffffffffffffffff86169233927f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee929081900390910190a35061127a6126f1565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055919050565b66470de4df82000081565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60046020526000908152604090205481565b60076020526000908152604090205481565b600b5460009060ff1661136957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055306000908152600460205260409020546113c5670de0b6b3a76400006109176113b8610b65565b849063ffffffff611f1f16565b915060008211611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806136cf6023913960400191505060405180910390fd5b600a5482111561147b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806136f26022913960400191505060405180910390fd5b61148530826127cb565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156114fa57600080fd5b505af115801561150e573d6000803e3d6000fd5b5050505061151c838361288f565b6040805183815260208101839052815173ffffffffffffffffffffffffffffffffffffffff86169233927f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc929081900390910190a35061127a6126f1565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107925780601f1061076757610100808354040283529160200191610792565b60006109ed338484612182565b600e5473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6103e881565b600b5460ff1661169857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600a54600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905161177c93859361177793919273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561173f57600080fd5b505afa158015611753573d6000803e3d6000fd5b505050506040513d602081101561176957600080fd5b50519063ffffffff6125fe16565b61288f565b50600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60095473ffffffffffffffffffffffffffffffffffffffff1681565b600c5473ffffffffffffffffffffffffffffffffffffffff1681565b60105473ffffffffffffffffffffffffffffffffffffffff1681565b61182e878787878787877f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9612a9b565b610e36878787612062565b600560209081526000928352604080842090915290825290205481565b600d5473ffffffffffffffffffffffffffffffffffffffff1681565b600b5460ff166118e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905533321461191757600080fd5b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561198157600080fd5b505af1158015611995573d6000803e3d6000fd5b5050600c54600092506119be915073ffffffffffffffffffffffffffffffffffffffff1661255c565b9050806119cb5750611e49565b6000670de0b6b3a76400006119ed8366470de4df82000063ffffffff611f1f16565b816119f457fe5b600c549190049150611a239073ffffffffffffffffffffffffffffffffffffffff16338363ffffffff612d3e16565b600c54600f54600091829173ffffffffffffffffffffffffffffffffffffffff90811691161480611a715750600c5460105473ffffffffffffffffffffffffffffffffffffffff9081169116145b15611aeb57600c54600f5473ffffffffffffffffffffffffffffffffffffffff908116911614611ac057601054600f5473ffffffffffffffffffffffffffffffffffffffff9182169116611ae1565b600f5460105473ffffffffffffffffffffffffffffffffffffffff91821691165b9092509050611c0c565b600c54600e54611b249173ffffffffffffffffffffffffffffffffffffffff9081169116611b1f878763ffffffff6125fe16565b612f14565b600e54600f5473ffffffffffffffffffffffffffffffffffffffff90811691161480611b6d5750600e5460105473ffffffffffffffffffffffffffffffffffffffff9081169116145b15611bbc57600e54600f5473ffffffffffffffffffffffffffffffffffffffff908116911614611ac057601054600f5473ffffffffffffffffffffffffffffffffffffffff9182169116611ae1565b600e54600f54611be99173ffffffffffffffffffffffffffffffffffffffff9081169116611b1f8261255c565b5050600f5460105473ffffffffffffffffffffffffffffffffffffffff91821691165b6000611c2d8373ffffffffffffffffffffffffffffffffffffffff1661255c565b905060008111611c3957fe5b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611ca457600080fd5b505afa158015611cb8573d6000803e3d6000fd5b505050506040513d6060811015611cce57600080fd5b508051602090910151600f546dffffffffffffffffffffffffffff92831694509116915060009073ffffffffffffffffffffffffffffffffffffffff878116911614611d1a5781611d1c565b825b90506000611d2a8583613191565b9050611d37878783612f14565b6000611d728888611d4e898663ffffffff6125fe16565b611d6d8b73ffffffffffffffffffffffffffffffffffffffff1661255c565b61321e565b9050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a694fc3a826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611de957600080fd5b505af1158015611dfd573d6000803e3d6000fd5b5050604080518d8152602081018d905281513394507fc003f45bc224d116b6d079100d4ab57a5b9633244c47a5a92a176c5b79a85f2893509081900390910190a2505050505050505050505b611e516126f1565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600b5460ff16611eef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055611e516126f1565b600082611f2e575060006109f1565b82820282848281611f3b57fe5b0414611f92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806136ae6021913960400191505060405180910390fd5b9392505050565b6000611f9283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613314565b60006e010000000000000000000000000000821061205a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5374616b65644c50546f6b656e30313a20534146453131320000000000000000604482015290519081900360640190fd5b50805b919050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000818484111561217a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561213f578181015183820152602001612127565b50505050905090810190601f16801561216c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b604080518082018252601b81527f496d7065726d61783a205452414e534645525f544f4f5f48494748000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff86166000908152600490915291909120546121f091839063ffffffff6120d116565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600460205260408082209390935590841681522054612232908263ffffffff61339316565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b81516122ae906000906020850190613558565b5080516122c2906001906020840190613558565b50604051469080605261365c82396040805191829003605201822086516020978801208383018352600184527f310000000000000000000000000000000000000000000000000000000000000093880193909352815180880191909152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c090910190925250805192019190912060065550565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061245557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612418565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146124b7576040519150601f19603f3d011682016040523d82523d6000602084013e6124bc565b606091505b50915091508180156124ea5750805115806124ea57508080602001905160208110156124e757600080fd5b50515b61255557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f2173616665417070726f76650000000000000000000000000000000000000000604482015290519081900360640190fd5b5050505050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156125cc57600080fd5b505afa1580156125e0573d6000803e3d6000fd5b505050506040513d60208110156125f657600080fd5b505192915050565b6000611f9283836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506120d1565b600354612653908263ffffffff61339316565b60035573ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205461268c908263ffffffff61339316565b73ffffffffffffffffffffffffffffffffffffffff831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600b54604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff16916370a0823191602480820192602092909190829003018186803b15801561276657600080fd5b505afa15801561277a573d6000803e3d6000fd5b505050506040513d602081101561279057600080fd5b5051600a81905560408051918252517f8a0df8ef054fae2c3d2d19a7b322e864870cc9fd3cb07fb9526309c596244bf49181900360200190a1565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054612801908263ffffffff6125fe16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205560035461283a908263ffffffff6125fe16565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600854604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff86811660248301526044808301879052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009560609594169382918083835b6020831061299557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612958565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146129f7576040519150601f19603f3d011682016040523d82523d6000602084013e6129fc565b606091505b5091509150818015612a2a575080511580612a2a5750808060200190516020811015612a2757600080fd5b50515b612a9557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a205452414e534645525f4641494c454400000000000000604482015290519081900360640190fd5b50505050565b42851015612b0a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496d7065726d61783a2045585049524544000000000000000000000000000000604482015290519081900360640190fd5b60065473ffffffffffffffffffffffffffffffffffffffff808a1660008181526007602090815260408083208054600180820190925582518085018a905280840196909652958e166060860152608085018d905260a085019590955260c08085018c90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff8a166101828501526101a284018990526101c28401889052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015612c4c573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590612cc757508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612d3257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e56414c49445f5349474e41545552450000000000604482015290519081900360640190fd5b50505050505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310612e1457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612dd7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612e76576040519150601f19603f3d011682016040523d82523d6000602084013e612e7b565b606091505b5091509150818015612ea9575080511580612ea95750808060200190516020811015612ea657600080fd5b50515b61255557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f21736166655472616e7366657200000000000000000000000000000000000000604482015290519081900360640190fd5b60408051600280825260608083018452926020830190803883390190505090508381600081518110612f4257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508281600181518110612f8a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612fce8483613407565b600d546040517f38ed1739000000000000000000000000000000000000000000000000000000008152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a4870152875173ffffffffffffffffffffffffffffffffffffffff909716966338ed1739968a968a9594939092909160c40190602080880191028083838b5b8381101561307a578181015183820152602001613062565b505050509050019650505050505050600060405180830381600087803b1580156130a357600080fd5b505af11580156130b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156130fe57600080fd5b810190808051604051939291908464010000000082111561311e57600080fd5b90830190602082018581111561313357600080fd5b825186602082028301116401000000008211171561315057600080fd5b82525081516020918201928201910280838360005b8381101561317d578181015183820152602001613165565b505050509050016040525050505050505050565b6000806131a66107cd8463ffffffff611f1f16565b905060006131d0610f946131c48681896103e863ffffffff611f1f16565b9063ffffffff611f1f16565b905060006131fc6131f7836131eb868063ffffffff611f1f16565b9063ffffffff61339316565b613507565b90506132146107ca610917838663ffffffff6125fe16565b9695505050505050565b600061322a8584613407565b6132348483613407565b600d54604080517fe8e3370000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301528781166024830152604482018790526064820186905260006084830181905260a483018190523060c48401524260e4840152925193169263e8e337009261010480840193606093929083900390910190829087803b1580156132dc57600080fd5b505af11580156132f0573d6000803e3d6000fd5b505050506040513d606081101561330657600080fd5b506040015195945050505050565b6000818361337d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561213f578181015183820152602001612127565b50600083858161338957fe5b0495945050505050565b600082820183811015611f9257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600d54604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff92831660248201529051839285169163dd62ed3e916044808301926020929190829003018186803b15801561348057600080fd5b505afa158015613494573d6000803e3d6000fd5b505050506040513d60208110156134aa57600080fd5b5051106134b657613503565b600d546135039073ffffffffffffffffffffffffffffffffffffffff84811691167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61237f16565b5050565b6000600382111561354a575080600160028204015b818110156135445780915060028182858161353357fe5b04018161353c57fe5b04905061351c565b5061205d565b811561205d57506001919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061359957805160ff19168380011785556135c6565b828001600101855582156135c6579182015b828111156135c65782518255916020019190600101906135ab565b506135d29291506135d6565b5090565b610bb291905b808211156135d257600081556001016135dc56fe5374616b65644c50546f6b656e30313a204d494e545f414d4f554e545f5a45524f5374616b65644c50546f6b656e30313a20464143544f52595f414c52454144595f5345545374616b65644c50546f6b656e30313a20494e53554646494349454e545f5245534552564553454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775374616b65644c50546f6b656e30313a2052454445454d5f414d4f554e545f5a45524f5374616b65644c50546f6b656e30313a20494e53554646494349454e545f43415348a265627a7a723158202211bd015164d398e3441e78dc3b042ed9c9b88b729b7a80af28a3d374942b5964736f6c63430005100032