12 txs
74 calls
constructor
constructor(address entropyAddress, address payoutTokenAddress)
functions
claims
viewfunction claims(uint64) view returns (address requester, uint256 roundId, uint256 payout)
defaultBoxProbBp
viewfunction defaultBoxProbBp(uint256) view returns (uint256)
defaultValueShareBp
viewfunction defaultValueShareBp(uint256) view returns (uint256)
entropy
viewfunction entropy() view returns (address)
getEntropyFee
viewfunction getEntropyFee() view returns (uint256)
getRoundTiers
viewfunction getRoundTiers(uint256 index) view returns (tuple[])
manager
viewfunction manager() view returns (address)
MAX_BOXES_PER_REQUEST
viewfunction MAX_BOXES_PER_REQUEST() view returns (uint256)
owner
viewfunction owner() view returns (address)
payoutToken
viewfunction payoutToken() view returns (address)
requests
viewfunction requests(uint64) view returns (address requester, uint256 roundId, uint256 count, bool claimed)
rounds
viewfunction rounds(uint256) view returns (uint256 roundId, uint256 totalBoxes, uint256 totalPayout, uint256 availableToReserve, bool initialized)
seeds
viewfunction seeds(uint64) view returns (bytes32)
_entropyCallback
nonpayablefunction _entropyCallback(uint64 sequence, address provider, bytes32 randomNumber)
claimLoot
nonpayablefunction claimLoot(uint64 sequenceNumber)
claimPayment
nonpayablefunction claimPayment(uint64 sequenceNumber)
initRound
nonpayablefunction initRound(uint256 roundId, uint256 totalBoxes, uint256 totalPayout)
reclaimETH
nonpayablefunction reclaimETH(address to, uint256 amount)
reclaimUnreserved
nonpayablefunction reclaimUnreserved(uint256 roundId, address to) returns (uint256 reclaimedAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
requestLootboxes
payablefunction requestLootboxes(uint256 roundId, address requester, uint256 count) payable returns (uint64 sequenceNumber)
rescueTokens
nonpayablefunction rescueTokens(address token, uint256 amount)
setManager
nonpayablefunction setManager(address managerAddress)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateDefaultConfigs
nonpayablefunction updateDefaultConfigs(uint256[] boxProbBp, uint256[] valueShareBp)
events
DefaultConfigsUpdated
event DefaultConfigsUpdated()
EntropyFulfilled
event EntropyFulfilled(uint64 indexed seq, address indexed provider, bytes32 seed)
LootClaimed
event LootClaimed(uint64 indexed seq, address indexed claimer, uint256 roundId, uint256[] payouts)
LootRequested
event LootRequested(uint64 indexed seq, address indexed requester, uint256 roundId, uint256 count)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PaymentClaimed
event PaymentClaimed(uint64 indexed seq, address indexed claimer, uint256 roundId, uint256 payout)
RoundInitialized
event RoundInitialized(uint256 indexed roundId, uint256 totalBoxes, uint256 totalPayout)
TiersConfigured
event TiersConfigured(uint256 indexed roundId)
UnreservedReclaimed
event UnreservedReclaimed(uint256 indexed roundId, address indexed to, uint256 unreservedBoxes, uint256 reclaimedTokenAmount)
errors
NoBoxesAvailable
error NoBoxesAvailable()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60c060405234801561000f575f5ffd5b50604051614a76380380614a7683398181016040528101906100319190610323565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100999190610370565b60405180910390fd5b6100b18161020460201b60201c565b50600180819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011e906103e3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018c9061044b565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050610469565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102f2826102c9565b9050919050565b610302816102e8565b811461030c575f5ffd5b50565b5f8151905061031d816102f9565b92915050565b5f5f60408385031215610339576103386102c5565b5b5f6103468582860161030f565b92505060206103578582860161030f565b9150509250929050565b61036a816102e8565b82525050565b5f6020820190506103835f830184610361565b92915050565b5f82825260208201905092915050565b7f656e74726f70792061646472207a65726f0000000000000000000000000000005f82015250565b5f6103cd601183610389565b91506103d882610399565b602082019050919050565b5f6020820190508181035f8301526103fa816103c1565b9050919050565b7f746f6b656e2061646472207a65726f00000000000000000000000000000000005f82015250565b5f610435600f83610389565b915061044082610401565b602082019050919050565b5f6020820190508181035f83015261046281610429565b9050919050565b60805160a0516145bb6104bb5f395f81816108ae01528181610bcb01528181610cdd01528181610e2f0152611e2001525f818161064401528181610de601528181611eba01526120c901526145bb5ff3fe608060405260043610610165575f3560e01c8063715018a6116100d0578063c2f1c30711610089578063dba1771211610063578063dba1771214610546578063f2ea438714610570578063f2fde38b146105ac578063f9f8a050146105d457610165565b8063c2f1c307146104a6578063c6e5e1aa146104e2578063d0ebdbe71461051e57610165565b8063715018a61461039a5780638c65c81f146103b05780638da5cb5b146103f05780638f532dbf1461041a578063acc361b114610442578063b2b261d21461047e57610165565b806347ce07cc1161012257806347ce07cc1461029c578063481c6a75146102c65780634efa82b6146102f057806352a5f1f81461031a5780635391945f14610342578063573761981461037257610165565b806327adb7d7146101695780632d971e63146101a75780632f541c45146101d157806335dfdef31461020d5780633796547114610235578063411010ec1461025d575b5f5ffd5b348015610174575f5ffd5b5061018f600480360381019061018a9190612dd7565b6105fc565b60405161019e93929190612e59565b60405180910390f35b3480156101b2575f5ffd5b506101bb610641565b6040516101c89190612e8e565b60405180910390f35b3480156101dc575f5ffd5b506101f760048036038101906101f29190612efb565b6106e6565b6040516102049190612e8e565b60405180910390f35b348015610218575f5ffd5b50610233600480360381019061022e9190612f39565b610950565b005b348015610240575f5ffd5b5061025b60048036038101906102569190612dd7565b610b20565b005b348015610268575f5ffd5b50610283600480360381019061027e9190612dd7565b610d8d565b6040516102939493929190612fa3565b60405180910390f35b3480156102a7575f5ffd5b506102b0610de4565b6040516102bd9190613041565b60405180910390f35b3480156102d1575f5ffd5b506102da610e08565b6040516102e7919061305a565b60405180910390f35b3480156102fb575f5ffd5b50610304610e2d565b6040516103119190613093565b60405180910390f35b348015610325575f5ffd5b50610340600480360381019061033b91906130df565b610e51565b005b61035c6004803603810190610357919061312f565b610f49565b604051610369919061318e565b60405180910390f35b34801561037d575f5ffd5b50610398600480360381019061039391906131a7565b610fed565b005b3480156103a5575f5ffd5b506103ae611024565b005b3480156103bb575f5ffd5b506103d660048036038101906103d191906131e5565b611037565b6040516103e7959493929190613210565b60405180910390f35b3480156103fb575f5ffd5b50610404611075565b604051610411919061305a565b60405180910390f35b348015610425575f5ffd5b50610440600480360381019061043b91906132c2565b61109c565b005b34801561044d575f5ffd5b50610468600480360381019061046391906131e5565b611317565b6040516104759190612e8e565b60405180910390f35b348015610489575f5ffd5b506104a4600480360381019061049f919061337b565b611337565b005b3480156104b1575f5ffd5b506104cc60048036038101906104c79190612dd7565b61149d565b6040516104d991906133c8565b60405180910390f35b3480156104ed575f5ffd5b50610508600480360381019061050391906131e5565b6114b2565b60405161051591906134eb565b60405180910390f35b348015610529575f5ffd5b50610544600480360381019061053f919061350b565b611549565b005b348015610551575f5ffd5b5061055a611602565b6040516105679190612e8e565b60405180910390f35b34801561057b575f5ffd5b50610596600480360381019061059191906131e5565b611607565b6040516105a39190612e8e565b60405180910390f35b3480156105b7575f5ffd5b506105d260048036038101906105cd919061350b565b611627565b005b3480156105df575f5ffd5b506105fa60048036038101906105f59190612dd7565b6116ab565b005b6003602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638204b67a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cf919061357b565b6fffffffffffffffffffffffffffffffff16905090565b5f6106ef6116be565b5f60025f8581526020019081526020015f209050806005015f9054906101000a900460ff16610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074a90613600565b60405180910390fd5b5f816003015490505f811161079d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079490613668565b60405180910390fd5b5f5f90505f5f90505f846004018054905090505f5f90505b8181101561085d578560040181815481106107d3576107d2613686565b5b905f5260205f209060040201600301548660040182815481106107f9576107f8613686565b5b905f5260205f2090600402015f015461081291906136e0565b8461081d9190613721565b935085600401818154811061083557610834613686565b5b905f5260205f20906004020160030154836108509190613721565b92508060010190506107b5565b505f8203610872575f9550505050505061094a565b838261087e9190613721565b848461088a91906136e0565b6108949190613781565b95505f85600301819055505f8611156108f3576108f287877f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117459092919063ffffffff16565b5b8673ffffffffffffffffffffffffffffffffffffffff16887f9103784d7a92fbfdc96f82221c7fd465c60427108b5c87d564e1672adecf3e1e868960405161093c9291906137b1565b60405180910390a350505050505b92915050565b6109586116be565b5f820361099a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099190613822565b60405180910390fd5b5f81036109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d39061388a565b60405180910390fd5b5f60068054905003610a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1a906138f2565b60405180910390fd5b5f8390505f60025f8381526020019081526020015f209050806005015f9054906101000a900460ff1615610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a839061395a565b60405180910390fd5b81815f01819055508381600101819055508281600201819055508381600301819055506001816005015f6101000a81548160ff021916908315150217905550817f984917a0a0fe4e02ef7ad194cb0292b5d8753a694115b6b109562161b2988cff8585604051610afd9291906137b1565b60405180910390a2610b108185856117c4565b610b1983611e18565b5050505050565b610b28611e68565b5f60035f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f826002015490505f8103610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb7906139c2565b60405180910390fd5b5f836001015490505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c22919061305a565b602060405180830381865afa158015610c3d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6191906139f4565b9050808311610c705782610c72565b805b925060035f8767ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f5f82015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f905550505f8314610d2257610d2184847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117459092919063ffffffff16565b5b8373ffffffffffffffffffffffffffffffffffffffff168667ffffffffffffffff167f3014a34b3d00c6c31b7749b785098fa3e16f4d3011590095e45b5d99d724e9478486604051610d759291906137b1565b60405180910390a35050505050610d8a611eae565b50565b6004602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015490806003015f9054906101000a900460ff16905084565b7f000000000000000000000000000000000000000000000000000000000000000081565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610e5a611eb7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec190613a69565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f90613af7565b60405180910390fd5b610f43848484611ede565b50505050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd090613b5f565b60405180910390fd5b610fe4848484611f6f565b90509392505050565b610ff56116be565b61102033828473ffffffffffffffffffffffffffffffffffffffff166117459092919063ffffffff16565b5050565b61102c6116be565b6110355f6122b0565b565b6002602052805f5260405f205f91509050805f015490806001015490806002015490806003015490806005015f9054906101000a900460ff16905085565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110a46116be565b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112a90613bc7565b60405180910390fd5b81819050848490501461117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290613c2f565b60405180910390fd5b5f84849050036111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790613c97565b60405180910390fd5b5f8484905090505f5f90505f5f90505f5f90505b83811015611235578787828181106111ef576111ee613686565b5b90506020020135836112019190613721565b925085858281811061121657611215613686565b5b90506020020135826112289190613721565b91508060010190506111d4565b50612710821461127a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127190613cff565b60405180910390fd5b61271081146112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b590613d67565b60405180910390fd5b8686600691906112cf929190612ccf565b508484600791906112e1929190612ccf565b507f7c3c6561e60e2662f0257d45bfaaead398f83b9588bae9ba4c8b3cec3a288fcb60405160405180910390a150505050505050565b60078181548110611326575f80fd5b905f5260205f20015f915090505481565b61133f6116be565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a490613dcf565b60405180910390fd5b478111156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e790613e37565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161141590613e82565b5f6040518083038185875af1925050503d805f811461144f576040519150601f19603f3d011682016040523d82523d5f602084013e611454565b606091505b5050905080611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f90613ee0565b60405180910390fd5b505050565b6005602052805f5260405f205f915090505481565b606060025f8381526020019081526020015f20600401805480602002602001604051908101604052809291908181526020015f905b8282101561153e578382905f5260205f2090600402016040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050815260200190600101906114e7565b505050509050919050565b6115516116be565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b690613f48565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b603281565b60068181548110611616575f80fd5b905f5260205f20015f915090505481565b61162f6116be565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361169f575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611696919061305a565b60405180910390fd5b6116a8816122b0565b50565b6116b3611e68565b6116bb611eae565b50565b6116c6612371565b73ffffffffffffffffffffffffffffffffffffffff166116e4611075565b73ffffffffffffffffffffffffffffffffffffffff161461174357611707612371565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161173a919061305a565b60405180910390fd5b565b6117bf838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401611778929190613f66565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612378565b505050565b826004015f6117d39190612d1a565b5f60068054905090505f5f90505f8267ffffffffffffffff8111156117fb576117fa613f8d565b5b6040519080825280602002602001820160405280156118295781602001602082028036833780820191505090505b5090505f5f90505b838110156118ea575f6127106006838154811061185157611850613686565b5b905f5260205f2001548861186591906136e0565b61186f9190613781565b90506118b06040518060400160405280600c81526020017f626f7820636f756e74733a20000000000000000000000000000000000000000081525082612413565b808383815181106118c4576118c3613686565b5b60200260200101818152505080846118dc9190613721565b935050806001019050611831565b505f82866118f89190613fba565b90505f811115611995575f5f90505f600190505b85811015611963576006828154811061192857611927613686565b5b905f5260205f2001546006828154811061194557611944613686565b5b905f5260205f2001541115611958578091505b80600101905061190c565b508183828151811061197857611977613686565b5b6020026020010181815161198c9190613721565b91508181525050505b6119df6040518060400160405280601681526020017f546f74616c2061737369676e656420626f7865733a200000000000000000000081525082856119da9190613721565b612413565b5f5f90505f8567ffffffffffffffff8111156119fe576119fd613f8d565b5b604051908082528060200260200182016040528015611a2c5781602001602082028036833780820191505090505b5090505f5f90505b86811015611aed575f61271060078381548110611a5457611a53613686565b5b905f5260205f2001548a611a6891906136e0565b611a729190613781565b905080838381518110611a8857611a87613686565b5b602002602001018181525050611ad36040518060400160405280601781526020017f56616c7565205368617265732070657220546965723a2000000000000000000081525082612413565b8084611adf9190613721565b935050806001019050611a34565b505f8288611afb9190613fba565b90505f811115611b98575f5f90505f600190505b88811015611b665760078281548110611b2b57611b2a613686565b5b905f5260205f20015460078281548110611b4857611b47613686565b5b905f5260205f2001541115611b5b578091505b806001019050611b0f565b5081838281518110611b7b57611b7a613686565b5b60200260200101818151611b8f9190613721565b91508181525050505b5f5f90505b87811015611ddb575f868281518110611bb957611bb8613686565b5b602002602001015190505f5f8211611bd1575f611bf8565b81858481518110611be557611be4613686565b5b6020026020010151611bf79190613781565b5b9050611c396040518060400160405280600d81526020017f5061792070657220626f783a200000000000000000000000000000000000000081525082612413565b8c600401604051806080016040528083815260200160068681548110611c6257611c61613686565b5b905f5260205f200154815260200160078681548110611c8457611c83613686565b5b905f5260205f200154815260200184815250908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f015560208201518160010155604082015181600201556060820151816003015550505f5f90505f5f90505b83811015611d10578282611d019190613721565b91508080600101915050611ced565b50611d506040518060400160405280601681526020017f546f74616c20626f7865732070657220746965723a200000000000000000000081525084612413565b611d8f6040518060400160405280601781526020017f546f74616c207061796f75742070657220746965723a2000000000000000000081525082612413565b611dcd6040518060400160405280601a81526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0000000000008152506124af565b505050806001019050611b9d565b50895f01547f6c294f714ba8b08784431e9d0089b7c8b4ec97c23fa411d13e3d9131130794fb60405160405180910390a250505050505050505050565b611e653330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612548909392919063ffffffff16565b50565b600260015403611ea4576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b60018081905550565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b8060055f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2081905550611f11836125ca565b8173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167f2a09b01beb06e159725b191b6a1af189fda67edbe7894829d9602fe76b3d668d83604051611f6291906133c8565b60405180910390a3505050565b5f5f8214158015611f81575060328211155b611fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb790614037565b60405180910390fd5b5f8490505f60025f8381526020019081526020015f209050806005015f9054906101000a900460ff16612028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201f9061409f565b60405180910390fd5b5f816003015403612065576040517f458ae95900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003015484111561207957806003015493505b5f612082610641565b9050803410156120c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120be90614107565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637b43155d826040518263ffffffff1660e01b815260040160206040518083038185885af1158015612132573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906121579190614139565b935084826003015f82825461216c9190613fba565b9250508190555060405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018681526020015f151581525060045f8667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050508573ffffffffffffffffffffffffffffffffffffffff168467ffffffffffffffff167f21d954649f76fe7ae909e6d97ba45faf4cc009fca8ec5fe8e764a6ff1802a7fa858860405161229e9291906137b1565b60405180910390a35050509392505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f5f60205f8451602086015f885af180612397576040513d5f823e3d81fd5b3d92505f519150505f82146123b05760018114156123cb565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561240d57836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612404919061305a565b60405180910390fd5b50505050565b6124ab82826040516024016124299291906141c4565b6040516020818303038152906040527fb60e72cc000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bf2565b5050565b612545816040516024016124c391906141f2565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bf2565b50565b6125c4848573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161257d93929190614212565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612378565b50505050565b5f60045f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267d90614291565b60405180910390fd5b816003015f9054906101000a900460ff16156126d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ce906142f9565b60405180910390fd5b5f60055f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205490505f5f1b8103612744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273b90614361565b60405180910390fd5b5f60025f856001015481526020019081526020015f209050806005015f9054906101000a900460ff166127ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a39061409f565b60405180910390fd5b5f846002015490505f8167ffffffffffffffff8111156127cf576127ce613f8d565b5b6040519080825280602002602001820160405280156127fd5781602001602082028036833780820191505090505b5090505f60035f8967ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f20905085815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550866001015481600101819055505f5f90505b83811015612b6b575f86826040516020016128979291906143bf565b604051602081830303815290604052805190602001205f1c90505f5f90505f876004018054905090505f5f90505b8181101561290b578860040181815481106128e3576128e2613686565b5b905f5260205f20906004020160030154836128fe9190613721565b92508060010190506128c5565b505f820361299e5760018b6003015f6101000a81548160ff0219169083151502179055508973ffffffffffffffffffffffffffffffffffffffff168c67ffffffffffffffff167f3525beebd202b53f76fc20196a2c75e7eabf58d53fe2f422c91b9906622c8b728d6001015489604051612986929190614492565b60405180910390a35050505050505050505050612bef565b5f82846129ab91906144c0565b90505f5f90505f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90505f5f90505b84811015612a4f575f8c60040182815481106129f9576129f8613686565b5b905f5260205f2090600402016003015490505f8103612a185750612a44565b8084612a249190613721565b851015612a345781925050612a4f565b8084612a409190613721565b9350505b8060010190506129da565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8103612ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa99061453a565b60405180910390fd5b60018b6004018281548110612aca57612ac9613686565b5b905f5260205f2090600402016003015f828254612ae79190613fba565b925050819055505f8b6004018281548110612b0557612b04613686565b5b905f5260205f2090600402015f01549050808a8981518110612b2a57612b29613686565b5b60200260200101818152505080896002015f828254612b499190613721565b92505081905550612b5981612c0c565b5050505050505080600101905061287b565b506001876003015f6101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff168867ffffffffffffffff167f3525beebd202b53f76fc20196a2c75e7eabf58d53fe2f422c91b9906622c8b72896001015485604051612bdf929190614492565b60405180910390a3505050505050505b50565b612c0981612c01612ca5612cc4565b63ffffffff16565b50565b612ca281604051602401612c209190612e8e565b6040516020818303038152906040527ff82c50f1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bf2565b50565b5f6a636f6e736f6c652e6c6f6790505f5f835160208501845afa505050565b612d3b819050919050565b828054828255905f5260205f20908101928215612d09579160200282015b82811115612d08578235825591602001919060010190612ced565b5b509050612d169190612d45565b5090565b5080545f8255600402905f5260205f2090810190612d389190612d60565b50565b612d43614558565b565b5b80821115612d5c575f815f905550600101612d46565b5090565b5b80821115612d8e575f5f82015f9055600182015f9055600282015f9055600382015f905550600401612d61565b5090565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff82169050919050565b612db681612d9a565b8114612dc0575f5ffd5b50565b5f81359050612dd181612dad565b92915050565b5f60208284031215612dec57612deb612d92565b5b5f612df984828501612dc3565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612e2b82612e02565b9050919050565b612e3b81612e21565b82525050565b5f819050919050565b612e5381612e41565b82525050565b5f606082019050612e6c5f830186612e32565b612e796020830185612e4a565b612e866040830184612e4a565b949350505050565b5f602082019050612ea15f830184612e4a565b92915050565b612eb081612e41565b8114612eba575f5ffd5b50565b5f81359050612ecb81612ea7565b92915050565b612eda81612e21565b8114612ee4575f5ffd5b50565b5f81359050612ef581612ed1565b92915050565b5f5f60408385031215612f1157612f10612d92565b5b5f612f1e85828601612ebd565b9250506020612f2f85828601612ee7565b9150509250929050565b5f5f5f60608486031215612f5057612f4f612d92565b5b5f612f5d86828701612ebd565b9350506020612f6e86828701612ebd565b9250506040612f7f86828701612ebd565b9150509250925092565b5f8115159050919050565b612f9d81612f89565b82525050565b5f608082019050612fb65f830187612e32565b612fc36020830186612e4a565b612fd06040830185612e4a565b612fdd6060830184612f94565b95945050505050565b5f819050919050565b5f613009613004612fff84612e02565b612fe6565b612e02565b9050919050565b5f61301a82612fef565b9050919050565b5f61302b82613010565b9050919050565b61303b81613021565b82525050565b5f6020820190506130545f830184613032565b92915050565b5f60208201905061306d5f830184612e32565b92915050565b5f61307d82613010565b9050919050565b61308d81613073565b82525050565b5f6020820190506130a65f830184613084565b92915050565b5f819050919050565b6130be816130ac565b81146130c8575f5ffd5b50565b5f813590506130d9816130b5565b92915050565b5f5f5f606084860312156130f6576130f5612d92565b5b5f61310386828701612dc3565b935050602061311486828701612ee7565b9250506040613125868287016130cb565b9150509250925092565b5f5f5f6060848603121561314657613145612d92565b5b5f61315386828701612ebd565b935050602061316486828701612ee7565b925050604061317586828701612ebd565b9150509250925092565b61318881612d9a565b82525050565b5f6020820190506131a15f83018461317f565b92915050565b5f5f604083850312156131bd576131bc612d92565b5b5f6131ca85828601612ee7565b92505060206131db85828601612ebd565b9150509250929050565b5f602082840312156131fa576131f9612d92565b5b5f61320784828501612ebd565b91505092915050565b5f60a0820190506132235f830188612e4a565b6132306020830187612e4a565b61323d6040830186612e4a565b61324a6060830185612e4a565b6132576080830184612f94565b9695505050505050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261328257613281613261565b5b8235905067ffffffffffffffff81111561329f5761329e613265565b5b6020830191508360208202830111156132bb576132ba613269565b5b9250929050565b5f5f5f5f604085870312156132da576132d9612d92565b5b5f85013567ffffffffffffffff8111156132f7576132f6612d96565b5b6133038782880161326d565b9450945050602085013567ffffffffffffffff81111561332657613325612d96565b5b6133328782880161326d565b925092505092959194509250565b5f61334a82612e02565b9050919050565b61335a81613340565b8114613364575f5ffd5b50565b5f8135905061337581613351565b92915050565b5f5f6040838503121561339157613390612d92565b5b5f61339e85828601613367565b92505060206133af85828601612ebd565b9150509250929050565b6133c2816130ac565b82525050565b5f6020820190506133db5f8301846133b9565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61341381612e41565b82525050565b608082015f82015161342d5f85018261340a565b506020820151613440602085018261340a565b506040820151613453604085018261340a565b506060820151613466606085018261340a565b50505050565b5f6134778383613419565b60808301905092915050565b5f602082019050919050565b5f613499826133e1565b6134a381856133eb565b93506134ae836133fb565b805f5b838110156134de5781516134c5888261346c565b97506134d083613483565b9250506001810190506134b1565b5085935050505092915050565b5f6020820190508181035f830152613503818461348f565b905092915050565b5f602082840312156135205761351f612d92565b5b5f61352d84828501612ee7565b91505092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b61355a81613536565b8114613564575f5ffd5b50565b5f8151905061357581613551565b92915050565b5f602082840312156135905761358f612d92565b5b5f61359d84828501613567565b91505092915050565b5f82825260208201905092915050565b7f726f756e64206e6f7420696e69740000000000000000000000000000000000005f82015250565b5f6135ea600e836135a6565b91506135f5826135b6565b602082019050919050565b5f6020820190508181035f830152613617816135de565b9050919050565b7f6e6f20756e7265736572766564000000000000000000000000000000000000005f82015250565b5f613652600d836135a6565b915061365d8261361e565b602082019050919050565b5f6020820190508181035f83015261367f81613646565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136ea82612e41565b91506136f583612e41565b925082820261370381612e41565b9150828204841483151761371a576137196136b3565b5b5092915050565b5f61372b82612e41565b915061373683612e41565b925082820190508082111561374e5761374d6136b3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61378b82612e41565b915061379683612e41565b9250826137a6576137a5613754565b5b828204905092915050565b5f6040820190506137c45f830185612e4a565b6137d16020830184612e4a565b9392505050565b7f746f74616c426f7865733e3000000000000000000000000000000000000000005f82015250565b5f61380c600c836135a6565b9150613817826137d8565b602082019050919050565b5f6020820190508181035f83015261383981613800565b9050919050565b7f746f74616c5061796f75743e30000000000000000000000000000000000000005f82015250565b5f613874600d836135a6565b915061387f82613840565b602082019050919050565b5f6020820190508181035f8301526138a181613868565b9050919050565b7f64656661756c742070726f6273206e6f742073657400000000000000000000005f82015250565b5f6138dc6015836135a6565b91506138e7826138a8565b602082019050919050565b5f6020820190508181035f830152613909816138d0565b9050919050565b7f726f756e6420616c726561647920696e697469616c697a6564000000000000005f82015250565b5f6139446019836135a6565b915061394f82613910565b602082019050919050565b5f6020820190508181035f83015261397181613938565b9050919050565b7f6e6f20636c61696d0000000000000000000000000000000000000000000000005f82015250565b5f6139ac6008836135a6565b91506139b782613978565b602082019050919050565b5f6020820190508181035f8301526139d9816139a0565b9050919050565b5f815190506139ee81612ea7565b92915050565b5f60208284031215613a0957613a08612d92565b5b5f613a16848285016139e0565b91505092915050565b7f456e74726f70792061646472657373206e6f74207365740000000000000000005f82015250565b5f613a536017836135a6565b9150613a5e82613a1f565b602082019050919050565b5f6020820190508181035f830152613a8081613a47565b9050919050565b7f4f6e6c7920456e74726f70792063616e2063616c6c20746869732066756e63745f8201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b5f613ae16023836135a6565b9150613aec82613a87565b604082019050919050565b5f6020820190508181035f830152613b0e81613ad5565b9050919050565b7f6e6f74206d616e616765720000000000000000000000000000000000000000005f82015250565b5f613b49600b836135a6565b9150613b5482613b15565b602082019050919050565b5f6020820190508181035f830152613b7681613b3d565b9050919050565b7f6d616e61676572206e6f742073657400000000000000000000000000000000005f82015250565b5f613bb1600f836135a6565b9150613bbc82613b7d565b602082019050919050565b5f6020820190508181035f830152613bde81613ba5565b9050919050565b7f6c656e677468206d69736d6174636800000000000000000000000000000000005f82015250565b5f613c19600f836135a6565b9150613c2482613be5565b602082019050919050565b5f6020820190508181035f830152613c4681613c0d565b9050919050565b7f656d7074792070726f626162696c6974696573000000000000000000000000005f82015250565b5f613c816013836135a6565b9150613c8c82613c4d565b602082019050919050565b5f6020820190508181035f830152613cae81613c75565b9050919050565b7f626f782070726f622073756d206d7573742062652031303030300000000000005f82015250565b5f613ce9601a836135a6565b9150613cf482613cb5565b602082019050919050565b5f6020820190508181035f830152613d1681613cdd565b9050919050565b7f76616c75652073686172652073756d206d7573742062652031303030300000005f82015250565b5f613d51601d836135a6565b9150613d5c82613d1d565b602082019050919050565b5f6020820190508181035f830152613d7e81613d45565b9050919050565b7f696e76616c696420746f000000000000000000000000000000000000000000005f82015250565b5f613db9600a836135a6565b9150613dc482613d85565b602082019050919050565b5f6020820190508181035f830152613de681613dad565b9050919050565b7f696e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613e216014836135a6565b9150613e2c82613ded565b602082019050919050565b5f6020820190508181035f830152613e4e81613e15565b9050919050565b5f81905092915050565b50565b5f613e6d5f83613e55565b9150613e7882613e5f565b5f82019050919050565b5f613e8c82613e62565b9150819050919050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f613eca6013836135a6565b9150613ed582613e96565b602082019050919050565b5f6020820190508181035f830152613ef781613ebe565b9050919050565b7f6e6f742076616c696420616464726573730000000000000000000000000000005f82015250565b5f613f326011836135a6565b9150613f3d82613efe565b602082019050919050565b5f6020820190508181035f830152613f5f81613f26565b9050919050565b5f604082019050613f795f830185612e32565b613f866020830184612e4a565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f613fc482612e41565b9150613fcf83612e41565b9250828203905081811115613fe757613fe66136b3565b5b92915050565b7f696e76616c696420636f756e74000000000000000000000000000000000000005f82015250565b5f614021600d836135a6565b915061402c82613fed565b602082019050919050565b5f6020820190508181035f83015261404e81614015565b9050919050565b7f726f756e64206e6f7420696e697469616c697a656400000000000000000000005f82015250565b5f6140896015836135a6565b915061409482614055565b602082019050919050565b5f6020820190508181035f8301526140b68161407d565b9050919050565b7f696e73756666696369656e7420666565000000000000000000000000000000005f82015250565b5f6140f16010836135a6565b91506140fc826140bd565b602082019050919050565b5f6020820190508181035f83015261411e816140e5565b9050919050565b5f8151905061413381612dad565b92915050565b5f6020828403121561414e5761414d612d92565b5b5f61415b84828501614125565b91505092915050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61419682614164565b6141a081856135a6565b93506141b081856020860161416e565b6141b98161417c565b840191505092915050565b5f6040820190508181035f8301526141dc818561418c565b90506141eb6020830184612e4a565b9392505050565b5f6020820190508181035f83015261420a818461418c565b905092915050565b5f6060820190506142255f830186612e32565b6142326020830185612e32565b61423f6040830184612e4a565b949350505050565b7f756e6b6e6f776e207265717565737400000000000000000000000000000000005f82015250565b5f61427b600f836135a6565b915061428682614247565b602082019050919050565b5f6020820190508181035f8301526142a88161426f565b9050919050565b7f616c726561647920636c61696d656400000000000000000000000000000000005f82015250565b5f6142e3600f836135a6565b91506142ee826142af565b602082019050919050565b5f6020820190508181035f830152614310816142d7565b9050919050565b7f656e74726f7079206e6f742066756c66696c6c656400000000000000000000005f82015250565b5f61434b6015836135a6565b915061435682614317565b602082019050919050565b5f6020820190508181035f8301526143788161433f565b9050919050565b5f819050919050565b614399614394826130ac565b61437f565b82525050565b5f819050919050565b6143b96143b482612e41565b61439f565b82525050565b5f6143ca8285614388565b6020820191506143da82846143a8565b6020820191508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f61441e838361340a565b60208301905092915050565b5f602082019050919050565b5f614440826143ea565b61444a81856143f4565b935061445583614404565b805f5b8381101561448557815161446c8882614413565b97506144778361442a565b925050600181019050614458565b5085935050505092915050565b5f6040820190506144a55f830185612e4a565b81810360208301526144b78184614436565b90509392505050565b5f6144ca82612e41565b91506144d583612e41565b9250826144e5576144e4613754565b5b828206905092915050565b7f746965722073656c656374696f6e206661696c656400000000000000000000005f82015250565b5f6145246015836135a6565b915061452f826144f0565b602082019050919050565b5f6020820190508181035f83015261455181614518565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffdfea26469706673582212206b2efdc3631b18c31ce18a437da4403764fb14e1ab7f5df822bd905970b2467564736f6c634300081e00330000000000000000000000006e7d74fa7d5c90fef9f0512987605a6d546181bb000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913