[ { "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" }, { "payable": true, "stateMutability": "payable", "type": "fallback" }, { "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": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "address", "name": "_underlying", "type": "address" }, { "internalType": "address", "name": "_token0", "type": "address" }, { "internalType": "address", "name": "_token1", "type": "address" }, { "internalType": "address", "name": "_router", "type": "address" }, { "internalType": "address", "name": "_masterChef", "type": "address" }, { "internalType": "address", "name": "_rewardsToken", "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": false, "inputs": [], "name": "getReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "isStakedLPToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "masterChef", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "pid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "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": "stakedLPTokenType", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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" } ]
60806040526002805460ff19908116601217909155600b805490911660011790556141638061002f6000396000f3fe6080604052600436106102a05760003560e01c806370a082311161016e578063d1af0c7d116100cb578063e9d60d9f1161007f578063f887ea4011610064578063f887ea4014610992578063fdb5a03e146109a7578063fff6cae9146109bc576102a0565b8063e9d60d9f14610904578063f10684541461097d576102a0565b8063d505accf116100b0578063d505accf1461083c578063dd62ed3e146108a7578063e8bea167146108ef576102a0565b8063d1af0c7d14610812578063d21220a714610827576102a0565b8063ad5c464811610122578063ba9a7a5611610107578063ba9a7a56146107a8578063bc25cf77146107bd578063c45a0155146107fd576102a0565b8063ad5c46481461077e578063ad7a672f14610793576102a0565b806395a2251f1161015357806395a2251f146106e357806395d89b4114610723578063a9059cbb14610738576102a0565b806370a08231146106635780637ecebe00146106a3576102a0565b80633644e5151161021c5780635909c0d5116101d05780636a627842116101b55780636a627842146105f95780636c2a3bc5146106395780636f307dc31461064e576102a0565b80635909c0d5146105cf5780635a3d5493146105e4576102a0565b80633d18b912116102015780633d18b9121461058e5780634a5d316c146105a3578063575a86b2146105ba576102a0565b80633644e515146105645780633ba0b9a914610579576102a0565b80630dfe16811161027357806323b872dd1161025857806323b872dd146104d457806330adf81f14610524578063313ce56714610539576102a0565b80630dfe16811461046f57806318160ddd146104ad576102a0565b806306fdde031461032a5780630902f1ac146103b4578063095ea7b3146104005780630a6410631461045a575b601254604080517fd0e30db00000000000000000000000000000000000000000000000000000000081529051479273ffffffffffffffffffffffffffffffffffffffff169163d0e30db091849160048082019260009290919082900301818588803b15801561030e57600080fd5b505af1158015610322573d6000803e3d6000fd5b505050505050005b34801561033657600080fd5b5061033f6109d1565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610379578181015183820152602001610361565b50505050905090810190601f1680156103a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103c057600080fd5b506103c9610a7d565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b34801561040c57600080fd5b506104466004803603604081101561042357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610cc3565b604080519115158252519081900360200190f35b34801561046657600080fd5b50610446610cda565b34801561047b57600080fd5b50610484610cdf565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156104b957600080fd5b506104c2610cfb565b60408051918252519081900360200190f35b3480156104e057600080fd5b50610446600480360360608110156104f757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610d01565b34801561053057600080fd5b506104c2610e15565b34801561054557600080fd5b5061054e610e39565b6040805160ff9092168252519081900360200190f35b34801561057057600080fd5b506104c2610e42565b34801561058557600080fd5b506104c2610e48565b34801561059a57600080fd5b506104c2610e98565b3480156105af57600080fd5b506105b8610f78565b005b3480156105c657600080fd5b50610484611029565b3480156105db57600080fd5b506104c2611045565b3480156105f057600080fd5b506104c26110e1565b34801561060557600080fd5b506104c26004803603602081101561061c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661114c565b34801561064557600080fd5b506104c2611566565b34801561065a57600080fd5b50610484611571565b34801561066f57600080fd5b506104c26004803603602081101561068657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661158d565b3480156106af57600080fd5b506104c2600480360360208110156106c657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661159f565b3480156106ef57600080fd5b506104c26004803603602081101561070657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166115b1565b34801561072f57600080fd5b5061033f61185a565b34801561074457600080fd5b506104466004803603604081101561075b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118d2565b34801561078a57600080fd5b506104846118df565b34801561079f57600080fd5b506104c26118fb565b3480156107b457600080fd5b506104c2611901565b3480156107c957600080fd5b506105b8600480360360208110156107e057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611907565b34801561080957600080fd5b50610484611a8a565b34801561081e57600080fd5b50610484611aa6565b34801561083357600080fd5b50610484611ac2565b34801561084857600080fd5b506105b8600480360360e081101561085f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611ade565b3480156108b357600080fd5b506104c2600480360360408110156108ca57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611b22565b3480156108fb57600080fd5b5061033f611b3f565b34801561091057600080fd5b506105b8600480360361010081101561092857600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff602082013581169160408101358216916060820135811691608081013582169160a082013581169160c081013582169160e09091013516611b78565b34801561098957600080fd5b506104c2611de0565b34801561099e57600080fd5b50610484611de6565b3480156109b357600080fd5b506105b8611e02565b3480156109c857600080fd5b506105b8612380565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610a755780601f10610a4a57610100808354040283529160200191610a75565b820191906000526020600020905b815481529060010190602001808311610a5857829003601f168201915b505050505081565b6000806000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610aea57600080fd5b505afa158015610afe573d6000803e3d6000fd5b505050506040513d6060811015610b1457600080fd5b5080516020820151604090920151600354919550919350909150610b3757610cbe565b600a54600854604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916318160ddd916004808301926020929190829003018186803b158015610ba557600080fd5b505afa158015610bb9573d6000803e3d6000fd5b505050506040513d6020811015610bcf57600080fd5b50519050610c0b610c0682610bfa856dffffffffffffffffffffffffffff8a1663ffffffff61242116565b9063ffffffff61249b16565b6124dd565b9450610c34610c0682610bfa856dffffffffffffffffffffffffffff891663ffffffff61242116565b93506064856dffffffffffffffffffffffffffff16118015610c6657506064846dffffffffffffffffffffffffffff16115b610cbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806140556024913960400191505060405180910390fd5b50505b909192565b6000610cd0338484612564565b5060015b92915050565b600181565b600d5473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610e0057604080518082018252601e81527f496d7065726d61783a205452414e534645525f4e4f545f414c4c4f574544000060208083019190915273ffffffffffffffffffffffffffffffffffffffff87166000908152600582528381203382529091529190912054610dce91849063ffffffff6125d316565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602090815260408083203384529091529020555b610e0b848484612684565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025460ff1681565b60065481565b600354600a5460009190811580610e5d575080155b15610e7457670de0b6b3a764000092505050610e95565b610e9082610bfa83670de0b6b3a764000063ffffffff61242116565b925050505b90565b600b5460009060ff16610f0c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055333214610f4057600080fd5b610f4861279d565b9050600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590565b60095473ffffffffffffffffffffffffffffffffffffffff1615610ffd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496d7065726d61783a20464143544f52595f414c52454144595f534554000000604482015290519081900360640190fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055565b60105473ffffffffffffffffffffffffffffffffffffffff1681565b600854604080517f5909c0d5000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635909c0d5916004808301926020929190829003018186803b1580156110b057600080fd5b505afa1580156110c4573d6000803e3d6000fd5b505050506040513d60208110156110da57600080fd5b5051905090565b600854604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635a3d5493916004808301926020929190829003018186803b1580156110b057600080fd5b600b5460009060ff166111c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905560085460009061120d9073ffffffffffffffffffffffffffffffffffffffff16612d01565b601054600c54604080517f93f1a40b0000000000000000000000000000000000000000000000000000000081526004810192909252306024830152805193945060009373ffffffffffffffffffffffffffffffffffffffff909316926393f1a40b926044808201939291829003018186803b15801561128b57600080fd5b505afa15801561129f573d6000803e3d6000fd5b505050506040513d60408110156112b557600080fd5b5051601054600c54604080517f8dbdbe6d0000000000000000000000000000000000000000000000000000000081526004810192909252602482018690523060448301525192935073ffffffffffffffffffffffffffffffffffffffff90911691638dbdbe6d9160648082019260009290919082900301818387803b15801561133d57600080fd5b505af1158015611351573d6000803e3d6000fd5b5050601054600c54604080517f93f1a40b000000000000000000000000000000000000000000000000000000008152600481019290925230602483015280516000955073ffffffffffffffffffffffffffffffffffffffff90931693506393f1a40b92604480840193829003018186803b1580156113ce57600080fd5b505afa1580156113e2573d6000803e3d6000fd5b505050506040513d60408110156113f857600080fd5b5051905061142f611407610e48565b610bfa670de0b6b3a7640000611423858763ffffffff612da316565b9063ffffffff61242116565b93506003546000141561145d5761144e846103e863ffffffff612da316565b935061145d60006103e8612de5565b600084116114cc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5374616b65644c50546f6b656e3a204d494e545f414d4f554e545f5a45524f00604482015290519081900360640190fd5b6114d68585612de5565b6040805184815260208101869052815173ffffffffffffffffffffffffffffffffffffffff88169233927f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee929081900390910190a3505050611536612e96565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055919050565b66470de4df82000081565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60046020526000908152604090205481565b60076020526000908152604090205481565b600b5460009060ff1661162557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905530600090815260046020526040902054611681670de0b6b3a7640000610bfa611674610e48565b849063ffffffff61242116565b9150600082116116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806140796021913960400191505060405180910390fd5b600a5482111561174d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5374616b65644c50546f6b656e3a20494e53554646494349454e545f43415348604482015290519081900360640190fd5b6117573082612f7a565b601054600c54604080517f0ad58d2f0000000000000000000000000000000000000000000000000000000081526004810192909252602482018590523060448301525173ffffffffffffffffffffffffffffffffffffffff90921691630ad58d2f9160648082019260009290919082900301818387803b1580156117da57600080fd5b505af11580156117ee573d6000803e3d6000fd5b505050506117fc838361303e565b6040805183815260208101839052815173ffffffffffffffffffffffffffffffffffffffff86169233927f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc929081900390910190a350611536612e96565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610a755780601f10610a4a57610100808354040283529160200191610a75565b6000610cd0338484612684565b60125473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6103e881565b600b5460ff1661197857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600a54600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611a5c938593611a5793919273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b158015611a1f57600080fd5b505afa158015611a33573d6000803e3d6000fd5b505050506040513d6020811015611a4957600080fd5b50519063ffffffff612da316565b61303e565b50600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60095473ffffffffffffffffffffffffffffffffffffffff1681565b60115473ffffffffffffffffffffffffffffffffffffffff1681565b600e5473ffffffffffffffffffffffffffffffffffffffff1681565b611b0e878787878787877f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c961324a565b611b19878787612564565b50505050505050565b600560209081526000928352604080842090915290825290205481565b6040518060400160405280600481526020017f303231320000000000000000000000000000000000000000000000000000000081525081565b60095473ffffffffffffffffffffffffffffffffffffffff1615611be7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061410d6022913960400191505060405180910390fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055604080518082018252601181527f5374616b656420556e69737761702056320000000000000000000000000000006020808301919091528251808401909352600b83527f53544b442d554e492d563200000000000000000000000000000000000000000090830152611c82916134ed565b600c889055600880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8a811691909117909255600d80548216898416179055600e80548216888416179055600f8054821687841617905560108054821686841617905560118054821685841690811790915560128054909216928416929092179055611d4890857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6135d1565b611d8f73ffffffffffffffffffffffffffffffffffffffff8216857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff6135d116565b611dd673ffffffffffffffffffffffffffffffffffffffff8816847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff6135d116565b5050505050505050565b600c5481565b600f5473ffffffffffffffffffffffffffffffffffffffff1681565b600b5460ff16611e7357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055333214611ea757600080fd5b6000611eb161279d565b905080611ebe575061234b565b6000670de0b6b3a7640000611ee08366470de4df82000063ffffffff61242116565b81611ee757fe5b6011549190049150611f169073ffffffffffffffffffffffffffffffffffffffff16338363ffffffff6137ae16565b601154600d54600091829173ffffffffffffffffffffffffffffffffffffffff90811691161480611f645750601154600e5473ffffffffffffffffffffffffffffffffffffffff9081169116145b15611fde57601154600d5473ffffffffffffffffffffffffffffffffffffffff908116911614611fb357600e54600d5473ffffffffffffffffffffffffffffffffffffffff9182169116611fd4565b600d54600e5473ffffffffffffffffffffffffffffffffffffffff91821691165b90925090506120ff565b6011546012546120179173ffffffffffffffffffffffffffffffffffffffff9081169116612012878763ffffffff612da316565b613984565b601254600d5473ffffffffffffffffffffffffffffffffffffffff908116911614806120605750601254600e5473ffffffffffffffffffffffffffffffffffffffff9081169116145b156120af57601254600d5473ffffffffffffffffffffffffffffffffffffffff908116911614611fb357600e54600d5473ffffffffffffffffffffffffffffffffffffffff9182169116611fd4565b601254600d546120dc9173ffffffffffffffffffffffffffffffffffffffff908116911661201282612d01565b5050600d54600e5473ffffffffffffffffffffffffffffffffffffffff91821691165b60006121208373ffffffffffffffffffffffffffffffffffffffff16612d01565b90506000811161212c57fe5b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561219757600080fd5b505afa1580156121ab573d6000803e3d6000fd5b505050506040513d60608110156121c157600080fd5b508051602090910151600d546dffffffffffffffffffffffffffff92831694509116915060009073ffffffffffffffffffffffffffffffffffffffff87811691161461220d578161220f565b825b9050600061221d8583613c01565b905061222a878783613984565b60006122658888612241898663ffffffff612da316565b6122608b73ffffffffffffffffffffffffffffffffffffffff16612d01565b613c82565b601054600c54604080517f8dbdbe6d0000000000000000000000000000000000000000000000000000000081526004810192909252602482018490523060448301525192935073ffffffffffffffffffffffffffffffffffffffff90911691638dbdbe6d9160648082019260009290919082900301818387803b1580156122eb57600080fd5b505af11580156122ff573d6000803e3d6000fd5b5050604080518d8152602081018d905281513394507fc003f45bc224d116b6d079100d4ab57a5b9633244c47a5a92a176c5b79a85f2893509081900390910190a2505050505050505050505b612353612e96565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600b5460ff166123f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055612353612e96565b60008261243057506000610cd4565b8282028284828161243d57fe5b0414612494576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806140ec6021913960400191505060405180910390fd5b9392505050565b600061249483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d78565b60006e010000000000000000000000000000821061255c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5374616b65644c50546f6b656e3a205341464531313200000000000000000000604482015290519081900360640190fd5b50805b919050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000818484111561267c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612641578181015183820152602001612629565b50505050905090810190601f16801561266e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b604080518082018252601b81527f496d7065726d61783a205452414e534645525f544f4f5f48494748000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff86166000908152600490915291909120546126f291839063ffffffff6125d316565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600460205260408082209390935590841681522054612734908263ffffffff613df716565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b601054600c54604080517fc346253d000000000000000000000000000000000000000000000000000000008152600481019290925251600092839273ffffffffffffffffffffffffffffffffffffffff9091169163c346253d91602480820192602092909190829003018186803b15801561281757600080fd5b505afa15801561282b573d6000803e3d6000fd5b505050506040513d602081101561284157600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff811615612c4457600c54604080517fd63b3c490000000000000000000000000000000000000000000000000000000081526004810192909252306024830152600060448301819052905160609273ffffffffffffffffffffffffffffffffffffffff85169263d63b3c4992606480840193829003018186803b1580156128df57600080fd5b505afa1580156128f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604090815281101561293a57600080fd5b810190808051604051939291908464010000000082111561295a57600080fd5b90830190602082018581111561296f57600080fd5b825186602082028301116401000000008211171561298c57600080fd5b82525081516020918201928201910280838360005b838110156129b95781810151838201526020016129a1565b50505050905001604052602001805160405193929190846401000000008211156129e257600080fd5b9083019060208201858111156129f757600080fd5b8251866020820283011164010000000082111715612a1457600080fd5b82525081516020918201928201910280838360005b83811015612a41578181015183820152602001612a29565b50505050919091016040818152601054600c547f18fccc760000000000000000000000000000000000000000000000000000000084526004840152306024840152905197985073ffffffffffffffffffffffffffffffffffffffff16966318fccc769650604480830196506000955090935090839003019050818387803b158015612acb57600080fd5b505af1158015612adf573d6000803e3d6000fd5b506000925050505b8151811015612c3d576000612b24838381518110612b0157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16612d01565b90508015612c3357601154835173ffffffffffffffffffffffffffffffffffffffff90911690849084908110612b5657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415612b805750612c35565b601254835173ffffffffffffffffffffffffffffffffffffffff90911690849084908110612baa57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612c0657612c06838381518110612bdc57fe5b602090810291909101015160125473ffffffffffffffffffffffffffffffffffffffff1683613984565b601254601154612c339173ffffffffffffffffffffffffffffffffffffffff908116911661201282612d01565b505b600101612ae7565b5050612cd9565b601054600c54604080517f18fccc7600000000000000000000000000000000000000000000000000000000815260048101929092523060248301525173ffffffffffffffffffffffffffffffffffffffff909216916318fccc769160448082019260009290919082900301818387803b158015612cc057600080fd5b505af1158015612cd4573d6000803e3d6000fd5b505050505b601154612cfb9073ffffffffffffffffffffffffffffffffffffffff16612d01565b91505090565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b158015612d7157600080fd5b505afa158015612d85573d6000803e3d6000fd5b505050506040513d6020811015612d9b57600080fd5b505192915050565b600061249483836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506125d3565b600354612df8908263ffffffff613df716565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054612e31908263ffffffff613df716565b73ffffffffffffffffffffffffffffffffffffffff831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b601054600c54604080517f93f1a40b0000000000000000000000000000000000000000000000000000000081526004810192909252306024830152805160009373ffffffffffffffffffffffffffffffffffffffff16926393f1a40b926044808301939192829003018186803b158015612f0f57600080fd5b505afa158015612f23573d6000803e3d6000fd5b505050506040513d6040811015612f3957600080fd5b5051600a8190556040805182815290519192507f8a0df8ef054fae2c3d2d19a7b322e864870cc9fd3cb07fb9526309c596244bf4919081900360200190a150565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054612fb0908263ffffffff612da316565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020526040902055600354612fe9908263ffffffff612da316565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600854604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff86811660248301526044808301879052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009560609594169382918083835b6020831061314457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613107565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146131a6576040519150601f19603f3d011682016040523d82523d6000602084013e6131ab565b606091505b50915091508180156131d95750805115806131d957508080602001905160208110156131d657600080fd5b50515b61324457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a205452414e534645525f4641494c454400000000000000604482015290519081900360640190fd5b50505050565b428510156132b957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496d7065726d61783a2045585049524544000000000000000000000000000000604482015290519081900360640190fd5b60065473ffffffffffffffffffffffffffffffffffffffff808a1660008181526007602090815260408083208054600180820190925582518085018a905280840196909652958e166060860152608085018d905260a085019590955260c08085018c90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff8a166101828501526101a284018990526101c28401889052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa1580156133fb573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061347657508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6134e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e56414c49445f5349474e41545552450000000000604482015290519081900360640190fd5b50505050505050505050565b8151613500906000906020850190613fbc565b508051613514906001906020840190613fbc565b50604051469080605261409a82396040805191829003605201822086516020978801208383018352600184527f310000000000000000000000000000000000000000000000000000000000000093880193909352815180880191909152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c090910190925250805192019190912060065550565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106136a757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161366a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613709576040519150601f19603f3d011682016040523d82523d6000602084013e61370e565b606091505b509150915081801561373c57508051158061373c575080806020019051602081101561373957600080fd5b50515b6137a757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f2173616665417070726f76650000000000000000000000000000000000000000604482015290519081900360640190fd5b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061388457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613847565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146138e6576040519150601f19603f3d011682016040523d82523d6000602084013e6138eb565b606091505b5091509150818015613919575080511580613919575080806020019051602081101561391657600080fd5b50515b6137a757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f21736166655472616e7366657200000000000000000000000000000000000000604482015290519081900360640190fd5b604080516002808252606080830184529260208301908038833901905050905083816000815181106139b257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816001815181106139fa57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a3e8483613e6b565b600f546040517f38ed1739000000000000000000000000000000000000000000000000000000008152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a4870152875173ffffffffffffffffffffffffffffffffffffffff909716966338ed1739968a968a9594939092909160c40190602080880191028083838b5b83811015613aea578181015183820152602001613ad2565b505050509050019650505050505050600060405180830381600087803b158015613b1357600080fd5b505af1158015613b27573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526020811015613b6e57600080fd5b8101908080516040519392919084640100000000821115613b8e57600080fd5b908301906020820185811115613ba357600080fd5b8251866020820283011164010000000082111715613bc057600080fd5b82525081516020918201928201910280838360005b83811015613bed578181015183820152602001613bd5565b505050509050016040525050505050505050565b600080613c166107cd8463ffffffff61242116565b90506000613c34610f946114238681896103e863ffffffff61242116565b90506000613c60613c5b83613c4f868063ffffffff61242116565b9063ffffffff613df716565b613f6b565b9050613c786107ca610bfa838663ffffffff612da316565b9695505050505050565b6000613c8e8584613e6b565b613c988483613e6b565b600f54604080517fe8e3370000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301528781166024830152604482018790526064820186905260006084830181905260a483018190523060c48401524260e4840152925193169263e8e337009261010480840193606093929083900390910190829087803b158015613d4057600080fd5b505af1158015613d54573d6000803e3d6000fd5b505050506040513d6060811015613d6a57600080fd5b506040015195945050505050565b60008183613de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201818152835160248401528351909283926044909101919085019080838360008315612641578181015183820152602001612629565b506000838581613ded57fe5b0495945050505050565b60008282018381101561249457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600f54604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff92831660248201529051839285169163dd62ed3e916044808301926020929190829003018186803b158015613ee457600080fd5b505afa158015613ef8573d6000803e3d6000fd5b505050506040513d6020811015613f0e57600080fd5b505110613f1a57613f67565b600f54613f679073ffffffffffffffffffffffffffffffffffffffff84811691167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff6135d116565b5050565b60006003821115613fae575080600160028204015b81811015613fa857809150600281828581613f9757fe5b040181613fa057fe5b049050613f80565b5061255f565b811561255f57506001919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ffd57805160ff191683800117855561402a565b8280016001018555821561402a579182015b8281111561402a57825182559160200191906001019061400f565b5061403692915061403a565b5090565b610e9591905b80821115614036576000815560010161404056fe5374616b65644c50546f6b656e3a20494e53554646494349454e545f52455345525645535374616b65644c50546f6b656e3a2052454445454d5f414d4f554e545f5a45524f454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775374616b65644c50546f6b656e3a20464143544f52595f414c52454144595f534554a265627a7a72315820060a2afc3f5ffa42d8c187c83882d46829a9497b843f6e9c57f195963ef9b3bf64736f6c63430005100032