[ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "i", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "reward", "type": "uint256" } ], "name": "Claim", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "rewardToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newEndBlock", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newRewardPerBlock", "type": "uint256" } ], "name": "FundAndSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "i", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "rewardToken", "type": "address" } ], "name": "NewRewardToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferPrepared", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "rewardToken", "type": "address" } ], "name": "RemoveRewardToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "i", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endBlock", "type": "uint256" } ], "name": "UpdateEndBlock", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "i", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "rewardPerBlock", "type": "uint256" } ], "name": "UpdateReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "i", "type": "uint256" } ], "name": "WithdrawLeftOver", "type": "event" }, { "inputs": [], "name": "_NEW_OWNER_", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_OWNER_", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_TOKEN_", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "rewardToken", "type": "address" }, { "internalType": "uint256", "name": "rewardPerBlock", "type": "uint256" }, { "internalType": "uint256", "name": "startBlock", "type": "uint256" }, { "internalType": "uint256", "name": "endBlock", "type": "uint256" } ], "name": "addRewardToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimAllRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "i", "type": "uint256" } ], "name": "claimReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "directTransferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "rewardToken", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "newEndBlock", "type": "uint256" }, { "internalType": "uint256", "name": "newRewardPerBlock", "type": "uint256" } ], "name": "fundAndSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "rewardToken", "type": "address" } ], "name": "getIdByRewardToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "i", "type": "uint256" } ], "name": "getPendingReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "address", "name": "rewardToken", "type": "address" } ], "name": "getPendingRewardByToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRewardNum", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "i", "type": "uint256" } ], "name": "getRewardTokenById", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "rewardToken", "type": "address" } ], "name": "getVaultByRewardToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "rewardToken", "type": "address" } ], "name": "getVaultDebtByRewardToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "token", "type": "address" } ], "name": "init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "initOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "rewardTokenInfos", "outputs": [ { "internalType": "address", "name": "rewardToken", "type": "address" }, { "internalType": "uint256", "name": "startBlock", "type": "uint256" }, { "internalType": "uint256", "name": "endBlock", "type": "uint256" }, { "internalType": "address", "name": "rewardVault", "type": "address" }, { "internalType": "uint256", "name": "rewardPerBlock", "type": "uint256" }, { "internalType": "uint256", "name": "accRewardPerShare", "type": "uint256" }, { "internalType": "uint256", "name": "lastRewardBlock", "type": "uint256" }, { "internalType": "uint256", "name": "workThroughReward", "type": "uint256" }, { "internalType": "uint256", "name": "lastFlagBlock", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "i", "type": "uint256" }, { "internalType": "uint256", "name": "newEndBlock", "type": "uint256" } ], "name": "setEndBlock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "i", "type": "uint256" }, { "internalType": "uint256", "name": "newRewardPerBlock", "type": "uint256" } ], "name": "setReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "i", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdrawLeftOver", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b5061542b806100206000396000f3fe608060405234801561001057600080fd5b50600436106101a85760003560e01c80638456db15116100f9578063b6b55f2511610097578063d895fff111610071578063d895fff1146104ab578063e513eb15146104c7578063f09a4016146104f7578063f2fde38b14610513576101a8565b8063b6b55f2514610443578063bdbf26571461045f578063bdd37dc61461048f576101a8565b8063a2a54bee116100d3578063a2a54bee146103bf578063a47bd496146103ef578063a7c3e4e51461040b578063ae169a5014610427576101a8565b80638456db151461035357806392e3200b14610371578063999ffd971461038f576101a8565b80631c00a0de116101665780634e71e0c8116101405780634e71e0c8146102cb5780635ae9a549146102d5578063697d86a2146102f357806370a0823114610323576101a8565b80631c00a0de1461025b5780632e1a7d4d1461029357806340ad09b8146102af576101a8565b8062b68f08146101ad5780630b83a727146101dd5780630d009297146101e757806316048bc41461020357806318160ddd146102215780631abbeb541461023f575b600080fd5b6101c760048036038101906101c29190613523565b61052f565b6040516101d49190614226565b60405180910390f35b6101e561054b565b005b61020160048036038101906101fc91906134fa565b61057d565b005b61020b61062b565b6040516102189190613d90565b60405180910390f35b610229610651565b6040516102369190614226565b60405180910390f35b61025960048036038101906102549190613679565b61065b565b005b61027560048036038101906102709190613627565b6109a8565b60405161028a99989796959493929190613e34565b60405180910390f35b6102ad60048036038101906102a89190613627565b610a43565b005b6102c960048036038101906102c4919061359b565b610c60565b005b6102d3610df0565b005b6102dd610fc5565b6040516102ea9190614226565b60405180910390f35b61030d60048036038101906103089190613627565b610fd2565b60405161031a9190613d90565b60405180910390f35b61033d600480360381019061033891906134fa565b61114b565b60405161034a9190614226565b60405180910390f35b61035b611194565b6040516103689190613d90565b60405180910390f35b6103796111ba565b6040516103869190613d90565b60405180910390f35b6103a960048036038101906103a4919061355f565b6111e0565b6040516103b69190614226565b60405180910390f35b6103d960048036038101906103d491906134fa565b61132a565b6040516103e69190614226565b60405180910390f35b61040960048036038101906104049190613679565b611415565b005b6104256004803603810190610420919061359b565b61172a565b005b610441600480360381019061043c9190613627565b611bbf565b005b61045d60048036038101906104589190613627565b611dab565b005b610479600480360381019061047491906134fa565b61213c565b6040516104869190614226565b60405180910390f35b6104a960048036038101906104a491906134fa565b6123c9565b005b6104c560048036038101906104c09190613679565b612589565b005b6104e160048036038101906104dc91906134fa565b6128e2565b6040516104ee9190613d90565b60405180910390f35b610511600480360381019061050c9190613523565b612a0b565b005b61052d600480360381019061052891906134fa565b612a59565b005b60006105438361053e8461132a565b6111e0565b905092915050565b6000600280549050905060008090505b818110156105795761056c81611bbf565b808060010191505061055b565b5050565b600160149054906101000a900460ff16156105cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c4906140c6565b60405180910390fd5b60018060146101000a81548160ff02191690831515021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e290614126565b60405180910390fd5b6002805490508210610732576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610729906141e6565b60405180910390fd5b61073d600083612ba9565b60006002838154811061074c57fe5b90600052602060002090600b0201905060008160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7502ef46040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c857600080fd5b505afa1580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108009190613650565b9050600061081b836008015485612cc190919063ffffffff16565b9050600061084c610839856004015484612d1190919063ffffffff16565b8560070154612d8190919063ffffffff16565b905080831015610891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088890614166565b60405180910390fd5b8443106108d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ca90614006565b60405180910390fd5b83600101544311610919576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610910906141c6565b60405180910390fd5b8360020154431061095f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610956906140a6565b60405180910390fd5b848460020181905550857f7283eac7a9c64d862e3560a616651ea06b57add3efe966190156d8862c10efd4866040516109989190614226565b60405180910390a2505050505050565b600281815481106109b557fe5b90600052602060002090600b02016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154908060050154908060060154908060070154908060080154905089565b6000809054906101000a900460ff1615610a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8990613f66565b60405180910390fd5b60016000806101000a81548160ff02191690831515021790555060008111610aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae690613fe6565b60405180910390fd5b610af833612dd6565b610b0d81600354612cc190919063ffffffff16565b600381905550610b6581600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cc190919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bf53382600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e0a9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436482604051610c3b9190614226565b60405180910390a260008060006101000a81548160ff02191690831515021790555050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce790614126565b60405180910390fd5b6000610cfb856128e2565b90506000610d088661132a565b9050610d373383878973ffffffffffffffffffffffffffffffffffffffff16612e90909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663ca1896ab6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d7f57600080fd5b505af1158015610d93573d6000803e3d6000fd5b50505050610da18184611415565b610dab818561065b565b7ff9ff0b161f7fcfd55f42a5566070bebed67350ceecece37c7448b82f3b94aed686868686604051610de09493929190613ec1565b60405180910390a1505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7790613f26565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600280549050905090565b6000600280549050821061101b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611012906141e6565b60405180910390fd5b611023613421565b6002838154811061103057fe5b90600052602060002090600b0201604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505090508060000151915050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002805490508210611229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611220906141e6565b60405180910390fd5b60006002838154811061123857fe5b90600052602060002090600b02019050600081600501549050438260060154146112685761126584612f19565b90505b61132082600a0160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113126112b98861114b565b61130d8660090160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486612cc190919063ffffffff16565b6130a9565b612d8190919063ffffffff16565b9250505092915050565b600080600280549050905060008090505b818110156113cc576002818154811061135057fe5b90600052602060002090600b020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113bf578092505050611410565b808060010191505061133b565b50600061140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590614046565b60405180910390fd5b505b919050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90614126565b60405180910390fd5b60028054905082106114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e3906141e6565b60405180910390fd5b6114f7600083612ba9565b60006002838154811061150657fe5b90600052602060002090600b020190508060020154431061155c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611553906140a6565b60405180910390fd5b61159f61158c826004015461157e846008015443612cc190919063ffffffff16565b612d1190919063ffffffff16565b8260070154612d8190919063ffffffff16565b816007018190555081816004018190555043816008018190555060008160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7502ef46040518163ffffffff1660e01b815260040160206040518083038186803b15801561162557600080fd5b505afa158015611639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165d9190613650565b90506000611678438460020154612cc190919063ffffffff16565b905060006116a56116928684612d1190919063ffffffff16565b8560070154612d8190919063ffffffff16565b9050808310156116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e190614166565b60405180910390fd5b857fbcabeac7f89430597dc942c3264f28fd08010c3b2e19ecf95c6e690f9820b2a48660405161171a9190614226565b60405180910390a2505050505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b190614126565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561182a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182190614026565b60405180910390fd5b43821161186c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186390614106565b60405180910390fd5b8181116118ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a590613f86565b60405180910390fd5b6000600280549050905060008090505b8181101561198057600281815481106118d357fe5b90600052602060002090600b020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a90613f46565b60405180910390fd5b80806001019150506118be565b50600060026001816001815401808255809150500390600052602060002090600b02019050858160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555083816008018190555082816002018190555084816004018190555085604051611a1990613499565b611a239190613d90565b604051809103906000f080158015611a3f573d6000803e3d6000fd5b508160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000611aa9611a9a8686612cc190919063ffffffff16565b87612d1190919063ffffffff16565b9050611afa8260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828973ffffffffffffffffffffffffffffffffffffffff16612e0a9092919063ffffffff16565b8160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca1896ab6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611b6657600080fd5b505af1158015611b7a573d6000803e3d6000fd5b50505050827ff164ae823f4542cc5c8fce1671fabc0d21159bf75d4fc92d697be0f1e748852688604051611bae9190613d90565b60405180910390a250505050505050565b6002805490508110611c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfd906141e6565b60405180910390fd5b611c103382612ba9565b600060028281548110611c1f57fe5b90600052602060002090600b02019050600081600a0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115611da657600082600a0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321670f2233836040518363ffffffff1660e01b8152600401611d24929190613dab565b600060405180830381600087803b158015611d3e57600080fd5b505af1158015611d52573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff16837f3ed1528b0fdc7c5207c1bf935e34a667e13656b9ed165260c522be0bc544f30383604051611d9d9190614226565b60405180910390a35b505050565b6000809054906101000a900460ff1615611dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df190613f66565b60405180910390fd5b60016000806101000a81548160ff02191690831515021790555060008111611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e90613f06565b60405180910390fd5b611e6033612dd6565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ebd9190613d90565b60206040518083038186803b158015611ed557600080fd5b505afa158015611ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0d9190613650565b9050611f5e333084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e90909392919063ffffffff16565b600061201d82600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611fbf9190613d90565b60206040518083038186803b158015611fd757600080fd5b505afa158015611feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200f9190613650565b612cc190919063ffffffff16565b905061203481600354612d8190919063ffffffff16565b60038190555061208c81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8190919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c826040516121159190614226565b60405180910390a2505060008060006101000a81548160ff02191690831515021790555050565b600080600280549050905060008090505b81811015612380576002818154811061216257fe5b90600052602060002090600b020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612373576000600282815481106121d657fe5b90600052602060002090600b020160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7502ef46040518163ffffffff1660e01b815260040160206040518083038186803b15801561224d57600080fd5b505afa158015612261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122859190613650565b905060006122d86002848154811061229957fe5b90600052602060002090600b020160080154600285815481106122b857fe5b90600052602060002090600b020160020154612cc190919063ffffffff16565b9050600061233d612310600286815481106122ef57fe5b90600052602060002090600b02016004015484612d1190919063ffffffff16565b6002868154811061231d57fe5b90600052602060002090600b020160070154612d8190919063ffffffff16565b9050808310612354576000955050505050506123c4565b6123678382612cc190919063ffffffff16565b955050505050506123c4565b808060010191505061214d565b5060006123c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b990614046565b60405180910390fd5b505b919050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245090614126565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c090614186565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261090614126565b60405180910390fd5b6002805490508210612660576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612657906141e6565b60405180910390fd5b60006002838154811061266f57fe5b90600052602060002090600b02019050806002015443116126c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bc906140e6565b60405180910390fd5b60006126e282600801548360020154612cc190919063ffffffff16565b90506000612713612700846004015484612d1190919063ffffffff16565b8460070154612d8190919063ffffffff16565b905060008360030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7502ef46040518163ffffffff1660e01b815260040160206040518083038186803b15801561278157600080fd5b505afa158015612795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b99190613650565b90506127ce8282612cc190919063ffffffff16565b851115612810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280790614066565b60405180910390fd5b8360030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636aa1afd633876040518363ffffffff1660e01b815260040161286f929190613dab565b600060405180830381600087803b15801561288957600080fd5b505af115801561289d573d6000803e3d6000fd5b505050507f6b769350ff403947f8ca4f54b35b9747d58b4b2676c957c460c1d5e4ba64342e33876040516128d2929190613dab565b60405180910390a1505050505050565b600080600280549050905060008090505b818110156129c2576002818154811061290857fe5b90600052602060002090600b020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156129b5576002818154811061297a57fe5b90600052602060002090600b020160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692505050612a06565b80806001019150506128f3565b506000612a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fb90614046565b60405180910390fd5b505b919050565b612a148261057d565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae090614126565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6260405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060028281548110612bb857fe5b90600052602060002090600b0201905043816006015414612bee57612bdc82612f19565b81600501819055504381600601819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612cbc57612c2c83836111e0565b81600a0160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600501548160090160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b600082821115612d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfd90614086565b60405180910390fd5b818303905092915050565b600080831415612d245760009050612d7b565b6000828402905082848281612d3557fe5b0414612d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6d90614206565b60405180910390fd5b809150505b92915050565b600080828401905083811015612dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc390614146565b60405180910390fd5b8091505092915050565b6000600280549050905060008090505b81811015612e0557612df88382612ba9565b8080600101915050612de6565b505050565b612e8b8363a9059cbb60e01b8484604051602401612e29929190613e0b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506130d7565b505050565b612f13846323b872dd60e01b858585604051602401612eb193929190613dd4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506130d7565b50505050565b6000612f23613421565b60028381548110612f3057fe5b90600052602060002090600b0201604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505090506000613048610651565b141561305b578060a001519150506130a4565b6130a061308d6130808360800151613072876131eb565b612d1190919063ffffffff16565b613088610651565b613394565b8260a00151612d8190919063ffffffff16565b9150505b919050565b6000670de0b6b3a76400006130c78385612d1190919063ffffffff16565b816130ce57fe5b04905092915050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516131009190613d79565b6000604051808303816000865af19150503d806000811461313d576040519150601f19603f3d011682016040523d82523d6000602084013e613142565b606091505b509150915081613187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317e90613fa6565b60405180910390fd5b6000815111156131e557808060200190518101906131a591906135fe565b6131e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131db906141a6565b60405180910390fd5b5b50505050565b60006131f5613421565b6002838154811061320257fe5b90600052602060002090600b0201604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505090508060200151431080613329575080604001518160c00151115b1561333857600091505061338f565b600081602001518260c0015110613353578160c00151613359565b81602001515b905060004383604001511061336e5743613374565b82604001515b90506133898282612cc190919063ffffffff16565b93505050505b919050565b60006133c3826133b5670de0b6b3a764000086612d1190919063ffffffff16565b6133cb90919063ffffffff16565b905092915050565b600080821161340f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340690613fc6565b60405180910390fd5b81838161341857fe5b04905092915050565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081525090565b6110978061435f83390190565b6000813590506134b581614319565b92915050565b6000815190506134ca81614330565b92915050565b6000813590506134df81614347565b92915050565b6000815190506134f481614347565b92915050565b60006020828403121561350c57600080fd5b600061351a848285016134a6565b91505092915050565b6000806040838503121561353657600080fd5b6000613544858286016134a6565b9250506020613555858286016134a6565b9150509250929050565b6000806040838503121561357257600080fd5b6000613580858286016134a6565b9250506020613591858286016134d0565b9150509250929050565b600080600080608085870312156135b157600080fd5b60006135bf878288016134a6565b94505060206135d0878288016134d0565b93505060406135e1878288016134d0565b92505060606135f2878288016134d0565b91505092959194509250565b60006020828403121561361057600080fd5b600061361e848285016134bb565b91505092915050565b60006020828403121561363957600080fd5b6000613647848285016134d0565b91505092915050565b60006020828403121561366257600080fd5b6000613670848285016134e5565b91505092915050565b6000806040838503121561368c57600080fd5b600061369a858286016134d0565b92505060206136ab858286016134d0565b9150509250929050565b6136be816142b0565b82525050565b6136cd81614268565b82525050565b60006136de82614241565b6136e8818561424c565b93506136f88185602086016142e6565b80840191505092915050565b6000613711601f83614257565b91507f444f444f4d696e6556333a2043414e4e4f545f4445504f5349545f5a45524f006000830152602082019050919050565b6000613751600d83614257565b91507f494e56414c49445f434c41494d000000000000000000000000000000000000006000830152602082019050919050565b6000613791601f83614257565b91507f444f444f4d696e6556333a20544f4b454e5f414c52454144595f4144444544006000830152602082019050919050565b60006137d1600983614257565b91507f5245454e5452414e5400000000000000000000000000000000000000000000006000830152602082019050919050565b6000613811601c83614257565b91507f444f444f4d696e6556333a204455524154494f4e5f494e56414c4944000000006000830152602082019050919050565b6000613851602083614257565b91507f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646000830152602082019050919050565b6000613891600e83614257565b91507f4449564944494e475f4552524f520000000000000000000000000000000000006000830152602082019050919050565b60006138d1602083614257565b91507f444f444f4d696e6556333a2043414e4e4f545f57495448445241575f5a45524f6000830152602082019050919050565b6000613911601d83614257565b91507f444f444f4d696e6556333a20454e445f424c4f434b5f494e56414c49440000006000830152602082019050919050565b6000613951601983614257565b91507f444f444f4d696e6556333a20544f4b454e5f494e56414c4944000000000000006000830152602082019050919050565b6000613991601b83614257565b91507f444f444f4d696e6556333a20544f4b454e5f4e4f545f464f554e4400000000006000830152602082019050919050565b60006139d1601683614257565b91507f444f444f4d696e6556333a204e4f545f454e4f554748000000000000000000006000830152602082019050919050565b6000613a11600983614257565b91507f5355425f4552524f5200000000000000000000000000000000000000000000006000830152602082019050919050565b6000613a51601983614257565b91507f444f444f4d696e6556333a20414c52454144595f434c4f5345000000000000006000830152602082019050919050565b6000613a91601083614257565b91507f444f444f5f494e495449414c495a4544000000000000000000000000000000006000830152602082019050919050565b6000613ad1601f83614257565b91507f444f444f4d696e6556333a204d494e494e475f4e4f545f46494e4953484544006000830152602082019050919050565b6000613b11601f83614257565b91507f444f444f4d696e6556333a2053544152545f424c4f434b5f494e56414c4944006000830152602082019050919050565b6000613b51600983614257565b91507f4e4f545f4f574e455200000000000000000000000000000000000000000000006000830152602082019050919050565b6000613b91600983614257565b91507f4144445f4552524f5200000000000000000000000000000000000000000000006000830152602082019050919050565b6000613bd1601d83614257565b91507f444f444f4d696e6556333a205245574152445f4e4f545f454e4f5547480000006000830152602082019050919050565b6000613c11601883614257565b91507f444f444f4d696e6556333a205a45524f5f4144445245535300000000000000006000830152602082019050919050565b6000613c51602a83614257565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000613cb7601583614257565b91507f444f444f4d696e6556333a204e4f545f535441525400000000000000000000006000830152602082019050919050565b6000613cf7601f83614257565b91507f444f444f4d696e6556333a205245574152445f49445f4e4f545f464f554e44006000830152602082019050919050565b6000613d37600983614257565b91507f4d554c5f4552524f5200000000000000000000000000000000000000000000006000830152602082019050919050565b613d73816142a6565b82525050565b6000613d8582846136d3565b915081905092915050565b6000602082019050613da560008301846136c4565b92915050565b6000604082019050613dc060008301856136b5565b613dcd6020830184613d6a565b9392505050565b6000606082019050613de960008301866136c4565b613df660208301856136c4565b613e036040830184613d6a565b949350505050565b6000604082019050613e2060008301856136c4565b613e2d6020830184613d6a565b9392505050565b600061012082019050613e4a600083018c6136c4565b613e57602083018b613d6a565b613e64604083018a613d6a565b613e7160608301896136c4565b613e7e6080830188613d6a565b613e8b60a0830187613d6a565b613e9860c0830186613d6a565b613ea560e0830185613d6a565b613eb3610100830184613d6a565b9a9950505050505050505050565b6000608082019050613ed660008301876136c4565b613ee36020830186613d6a565b613ef06040830185613d6a565b613efd6060830184613d6a565b95945050505050565b60006020820190508181036000830152613f1f81613704565b9050919050565b60006020820190508181036000830152613f3f81613744565b9050919050565b60006020820190508181036000830152613f5f81613784565b9050919050565b60006020820190508181036000830152613f7f816137c4565b9050919050565b60006020820190508181036000830152613f9f81613804565b9050919050565b60006020820190508181036000830152613fbf81613844565b9050919050565b60006020820190508181036000830152613fdf81613884565b9050919050565b60006020820190508181036000830152613fff816138c4565b9050919050565b6000602082019050818103600083015261401f81613904565b9050919050565b6000602082019050818103600083015261403f81613944565b9050919050565b6000602082019050818103600083015261405f81613984565b9050919050565b6000602082019050818103600083015261407f816139c4565b9050919050565b6000602082019050818103600083015261409f81613a04565b9050919050565b600060208201905081810360008301526140bf81613a44565b9050919050565b600060208201905081810360008301526140df81613a84565b9050919050565b600060208201905081810360008301526140ff81613ac4565b9050919050565b6000602082019050818103600083015261411f81613b04565b9050919050565b6000602082019050818103600083015261413f81613b44565b9050919050565b6000602082019050818103600083015261415f81613b84565b9050919050565b6000602082019050818103600083015261417f81613bc4565b9050919050565b6000602082019050818103600083015261419f81613c04565b9050919050565b600060208201905081810360008301526141bf81613c44565b9050919050565b600060208201905081810360008301526141df81613caa565b9050919050565b600060208201905081810360008301526141ff81613cea565b9050919050565b6000602082019050818103600083015261421f81613d2a565b9050919050565b600060208201905061423b6000830184613d6a565b92915050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061427382614286565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006142bb826142c2565b9050919050565b60006142cd826142d4565b9050919050565b60006142df82614286565b9050919050565b60005b838110156143045780820151818401526020810190506142e9565b83811115614313576000848401525b50505050565b61432281614268565b811461432d57600080fd5b50565b6143398161427a565b811461434457600080fd5b50565b614350816142a6565b811461435b57600080fd5b5056fe608060405234801561001057600080fd5b506040516110973803806110978339818101604052602081101561003357600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610f46806101516000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806375c5ea111161006657806375c5ea11146101b15780638456db15146101fb578063ca1896ab14610245578063d7502ef41461024f578063f2fde38b1461026d5761009e565b806316048bc4146100a357806321670f22146100ed5780634e71e0c81461013b578063586235b4146101455780636aa1afd614610163575b600080fd5b6100ab6102b1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101396004803603604081101561010357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506102d6565b005b61014361047c565b005b61014d610682565b6040518082815260200191505060405180910390f35b6101af6004803603604081101561017957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610688565b005b6101b961082e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610203610854565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61024d61087a565b005b6102576109e2565b6040518082815260200191505060405180910390f35b6102af6004803603602081101561028357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109e8565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610398576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e4f545f4f574e4552000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806002541015610410576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5641554c545f4e4f545f454e4f5547480000000000000000000000000000000081525060200191505060405180910390fd5b61042581600254610b6990919063ffffffff16565b6002819055506104788282600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bec9092919063ffffffff16565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461053f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f494e56414c49445f434c41494d0000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461074a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e4f545f4f574e4552000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060025410156107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5641554c545f4e4f545f454e4f5547480000000000000000000000000000000081525060200191505060405180910390fd5b6107d781600254610b6990919063ffffffff16565b60028190555061082a8282600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bec9092919063ffffffff16565b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561091b57600080fd5b505afa15801561092f573d6000803e3d6000fd5b505050506040513d602081101561094557600080fd5b81019080805190602001909291905050509050600061096f60025483610b6990919063ffffffff16565b905061098681600354610ca490919063ffffffff16565b600381905550816002819055507fed9a567f42e0ef8986598c5257db7be662f4eaae3892286b03c5ba3a1ddf399b6003548260025460405180848152602001838152602001828152602001935050505060405180910390a15050565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e4f545f4f574e4552000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6260405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600082821115610be1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f5355425f4552524f52000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b610c9f8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610d2c565b505050565b600080828401905083811015610d22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4144445f4552524f52000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610d7b5780518252602082019150602081019050602083039250610d58565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ddd576040519150601f19603f3d011682016040523d82523d6000602084013e610de2565b606091505b509150915081610e5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610ee057808060200190516020811015610e7957600080fd5b8101908080519060200190929190505050610edf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610ee7602a913960400191505060405180910390fd5b5b5050505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220ddd26789ef9f802c17c8e5a95bc1e99f8e5e9fb1ec9f60326f1720f3bef33bef64736f6c63430006090033a2646970667358221220d8043e4316921efc48e0bd71926a81dd19fd1b670b6cc1d4bc68a1727d6ae6a664736f6c63430006090033