0 txs
0 calls
constructor
constructor()
functions
budget
viewfunction budget(address _token) view returns (uint256)
burnAddress
viewfunction burnAddress() view returns (address)
calculateBetHash
purefunction calculateBetHash(tuple _bet) pure returns (bytes32)
calculateWinAmount
viewfunction calculateWinAmount(uint256 amount, uint256 modulo, uint256 odds) view returns (uint256 winAmount)
computeBetResult
viewfunction computeBetResult(address _token, address _gambler, uint256 _blockNumber, bytes32 blockHash, uint256[4] _rollIntegerVariables, bytes32 _userSeed, bytes32 _houseReveal) view returns (uint256 roll, uint256 payout, tuple betObject, bytes32 betHash)
CROUPIER_ROLE
viewfunction CROUPIER_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
hashBytes
purefunction hashBytes(bytes32 _toHash) pure returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
incompleteBets
viewfunction incompleteBets(bytes32) view returns (uint256)
lastResult
viewfunction lastResult(address) view returns (uint256 roll, uint256 reward)
margin
viewfunction margin() view returns (uint256)
maxPercWin
viewfunction maxPercWin() view returns (uint256)
maxWin
viewfunction maxWin(address _token) view returns (uint256)
minBet
viewfunction minBet(address) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tokenBurn
viewfunction tokenBurn(address) view returns (uint256)
completeBet
nonpayablefunction completeBet(address _token, address _gambler, uint256 _blockNumber, uint256[4] _rollIntegerVariables, bytes32 _userSeed, bytes32 _houseReveal)
createBet
nonpayablefunction createBet(address _token, uint256[4] _rollIntegerVariables, bytes32 _userSeed, bytes32 _houseCommit)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setBurnAddress
nonpayablefunction setBurnAddress(address _burnAddress)
setBurnPercForToken
nonpayablefunction setBurnPercForToken(address _tokenAddress, uint256 _perc)
setMaxPercWin
nonpayablefunction setMaxPercWin(uint256 _perc)
setMinBetForToken
nonpayablefunction setMinBetForToken(address _tokenAddress, uint256 _value)
withdraw
nonpayablefunction withdraw(address _token, uint256 _amount)
events
BetExpired
event BetExpired(bytes32 indexed betHash, address user, uint256 betAmount)
BetStarted
event BetStarted(bytes32 indexed betHash, (address token, address gambler, bytes32 commit, bytes32 userSeed, uint256 blockNumber, uint256[4] rollIntegerVariables) bet)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Roll
event Roll(bytes32 indexed betHash, (address token, address gambler, bytes32 commit, bytes32 userSeed, uint256 blockNumber, uint256[4] rollIntegerVariables) bet, uint256 result, uint256 payout)
errors
No errors.
creation bytecode
0x608060405261dead600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101f46006556101906007553480156200006057600080fd5b50620000856000801b62000079620000cc60201b60201c565b620000d460201b60201c565b620000c67fca4ff35aa85b5fefc8312f1391bd040d4b445859a4a611b13d905ef8daa4b19f620000ba620000cc60201b60201c565b620000d460201b60201c565b62000362565b600033905090565b620000e68282620000ea60201b60201c565b5050565b6200010182826200013260201b62001a581760201c565b6200012d81600160008581526020019081526020016000206200022360201b62001b381790919060201c565b505050565b6200014482826200025b60201b60201c565b6200021f57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001c4620000cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000253836000018373ffffffffffffffffffffffffffffffffffffffff1660001b620002c560201b60201c565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000620002d983836200033f60201b60201c565b6200033457826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000339565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b61407080620003726000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063a063f33611610104578063c9c66674116100a2578063d547741f11610071578063d547741f146105dd578063e229df5c146105f9578063f30af03714610629578063f3fef3a314610645576101da565b8063c9c6667414610543578063ca15c87314610573578063cc306aa7146105a3578063cca7273b146105bf576101da565b8063b9bf8d36116100de578063b9bf8d3614610494578063c4351361146104c4578063c6a73fc7146104f4578063c999a7cc14610510576101da565b8063a063f33614610428578063a217fddf14610446578063b1d2b05314610464576101da565b80634b0e72161161017c5780638c811d671161014b5780638c811d671461037a5780638f76691a146103aa5780639010d07c146103c857806391d14854146103f8576101da565b80634b0e7216146102f457806350a1ecc11461031057806370d5ae051461032c5780638b8b0f831461034a576101da565b8063248a9ca3116101b8578063248a9ca3146102705780632bb9c728146102a05780632f2ff15d146102bc57806336568abe146102d8576101da565b806301ffc9a7146101df578063142470901461020f5780632043031814610240575b600080fd5b6101f960048036038101906101f49190612ab7565b610661565b60405161020691906133df565b60405180910390f35b61022960048036038101906102249190612970565b6106db565b604051610237929190613708565b60405180910390f35b61025a60048036038101906102559190612970565b6106ff565b60405161026791906136ed565b60405180910390f35b61028a60048036038101906102859190612a0a565b610717565b60405161029791906133fa565b60405180910390f35b6102ba60048036038101906102b59190612b11565b610736565b005b6102d660048036038101906102d19190612a37565b610bff565b005b6102f260048036038101906102ed9190612a37565b610c28565b005b61030e60048036038101906103099190612970565b610cab565b005b61032a60048036038101906103259190612c45565b610db2565b005b610334611231565b6040516103419190613364565b60405180910390f35b610364600480360381019061035f9190612ae4565b611257565b60405161037191906136ed565b60405180910390f35b610394600480360381019061038f9190612a0a565b611283565b6040516103a191906136ed565b60405180910390f35b6103b261129b565b6040516103bf91906136ed565b60405180910390f35b6103e260048036038101906103dd9190612a77565b6112a1565b6040516103ef9190613364565b60405180910390f35b610412600480360381019061040d9190612a37565b6112d0565b60405161041f91906133df565b60405180910390f35b61043061133a565b60405161043d91906133fa565b60405180910390f35b61044e61135e565b60405161045b91906133fa565b60405180910390f35b61047e60048036038101906104799190612a0a565b611365565b60405161048b91906133fa565b60405180910390f35b6104ae60048036038101906104a99190612970565b611395565b6040516104bb91906136ed565b60405180910390f35b6104de60048036038101906104d99190612cec565b6113ad565b6040516104eb91906133fa565b60405180910390f35b61050e60048036038101906105099190612d1a565b6113dd565b005b61052a60048036038101906105259190612ba0565b61147f565b60405161053a9493929190613731565b60405180910390f35b61055d60048036038101906105589190612ae4565b61168f565b60405161056a91906136ed565b60405180910390f35b61058d60048036038101906105889190612a0a565b611721565b60405161059a91906136ed565b60405180910390f35b6105bd60048036038101906105b8919061299d565b611745565b005b6105c7611825565b6040516105d491906136ed565b60405180910390f35b6105f760048036038101906105f29190612a37565b61182b565b005b610613600480360381019061060e9190612d74565b611854565b60405161062091906136ed565b60405180910390f35b610643600480360381019061063e919061299d565b6118f0565b005b61065f600480360381019061065a9190612cac565b61198b565b005b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d457506106d382611b68565b5b9050919050565b60026020528060005260406000206000915090508060000154908060010154905082565b60036020528060005260406000206000915090505481565b6000806000838152602001908152602001600020600101549050919050565b6107677fca4ff35aa85b5fefc8312f1391bd040d4b445859a4a611b13d905ef8daa4b19f610762611be2565b6112d0565b6107a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079d90613657565b60405180910390fd5b8343116107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90613577565b60405180910390fd5b6000806000806107fe8a8a8a8b408b8b8b61147f565b93509350935093506000600860008381526020019081526020016000205490506000811415610862576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610859906135d7565b60405180910390fd5b61010043610870919061390e565b836080015110156109435760006008600084815260200190815260200160002081905550817f5a7c04de69e45893b35933028462bd1efefbf2d5ea85799d7b2b5a37f4f24e0a84602001518560a001516002600481106108d3576108d2613b5e565b5b60200201516040516108e69291906133b6565b60405180910390a261093983602001518460a0015160026004811061090e5761090d613b5e565b5b60200201518d73ffffffffffffffffffffffffffffffffffffffff16611bea9092919063ffffffff16565b5050505050610bf7565b600060086000848152602001908152602001600020819055508260a0015160026004811061097457610973613b5e565b5b6020020151841115610a3b576109898b611257565b8360a001516002600481106109a1576109a0613b5e565b5b6020020151856109b1919061390e565b10610a0657610a0183602001518460a001516002600481106109d6576109d5613b5e565b5b60200201518d73ffffffffffffffffffffffffffffffffffffffff16611bea9092919063ffffffff16565b610a36565b610a358360200151858d73ffffffffffffffffffffffffffffffffffffffff16611bea9092919063ffffffff16565b5b610b4a565b6000600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b49576000612710600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548560a00151600260048110610adf57610ade613b5e565b5b6020020151610aee91906138b4565b610af89190613883565b9050610b47600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828e73ffffffffffffffffffffffffffffffffffffffff16611bea9092919063ffffffff16565b505b5b604051806040016040528086815260200185815250600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155905050817fe4f7684cad38a6744dc71fb247443b6998b249df80de5d5cd8edfdaac39b45fb848787604051610be9939291906136b3565b60405180910390a250505050505b505050505050565b610c0882610717565b610c1981610c14611be2565b611c70565b610c238383611d0d565b505050565b610c30611be2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490613677565b60405180910390fd5b610ca78282611d41565b5050565b610cbf6000801b610cba611be2565b6112d0565b610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf5906135b7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6590613537565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015610e095750610e073373ffffffffffffffffffffffffffffffffffffffff16611d75565b155b610e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3f906134f7565b60405180910390fd5b600083600260048110610e5e57610e5d613b5e565b5b60200201519050600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811015610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ede90613457565b60405180910390fd5b610f143330838873ffffffffffffffffffffffffffffffffffffffff16611d88909392919063ffffffff16565b600084600160048110610f2a57610f29613b5e565b5b60200201511480610f535750600184600160048110610f4c57610f4b613b5e565b5b6020020151145b610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f89906134d7565b60405180910390fd5b600184600360048110610fa857610fa7613b5e565b5b602002015111610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490613517565b60405180910390fd5b6000808560016004811061100457611003613b5e565b5b60200201511415611069576110628560026004811061102657611025613b5e565b5b60200201518660036004811061103f5761103e613b5e565b5b60200201518760006004811061105857611057613b5e565b5b6020020151611854565b90506110ee565b6110eb856002600481106110805761107f613b5e565b5b60200201518660036004811061109957611098613b5e565b5b6020020151876000600481106110b2576110b1613b5e565b5b60200201516001896003600481106110cd576110cc613b5e565b5b60200201516110dc919061390e565b6110e6919061390e565b611854565b90505b60008560026004811061110457611103613b5e565b5b602002015182611114919061390e565b905061111f87611257565b811115611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890613477565b60405180910390fd5b600061117188338789438c611e11565b9050600061117e826113ad565b905060006008600083815260200190815260200160002054146111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd90613597565b60405180910390fd5b426008600083815260200190815260200160002081905550807f807999e5c79d5d541133d757c2fe16f7bf9d68d3c797b93b40c2c1237af5c8bc8360405161121e9190613697565b60405180910390a2505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006127106006546112688461168f565b61127291906138b4565b61127c9190613883565b9050919050565b60086020528060005260406000206000915090505481565b60075481565b60006112c88260016000868152602001908152602001600020611e7e90919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7fca4ff35aa85b5fefc8312f1391bd040d4b445859a4a611b13d905ef8daa4b19f81565b6000801b81565b60008160405160200161137891906133fa565b604051602081830303815290604052805190602001209050919050565b60046020528060005260406000206000915090505481565b6000816040516020016113c09190613697565b604051602081830303815290604052805190602001209050919050565b6113f16000801b6113ec611be2565b6112d0565b611430576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611427906135b7565b60405180910390fd5b612710811115611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c90613637565b60405180910390fd5b8060068190555050565b60008061148a61271a565b60008061149686611365565b90506114a68c8c838a8e8d611e11565b92506114b1836113ad565b91506114ff86838b6040516020016114cb939291906132d6565b60405160208183030381529060405280519060200120896003600481106114f5576114f4613b5e565b5b6020020151611e98565b94506000808460a0015160016004811061151c5761151b613b5e565b5b60200201511490506000945080801561155057508360a0015160006004811061154857611547613b5e565b5b602002015186105b156115bb576115b48460a001516002600481106115705761156f613b5e565b5b60200201518560a0015160036004811061158d5761158c613b5e565b5b60200201518660a001516000600481106115aa576115a9613b5e565b5b6020020151611854565b945061167f565b801580156115e457508360a001516000600481106115dc576115db613b5e565b5b602002015186115b1561167e5761167b8460a0015160026004811061160457611603613b5e565b5b60200201518560a0015160036004811061162157611620613b5e565b5b60200201518660a0015160006004811061163e5761163d613b5e565b5b602002015160018860a0015160036004811061165d5761165c613b5e565b5b602002015161166c919061390e565b611676919061390e565b611854565b94505b5b5050975097509750979350505050565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116ca9190613364565b60206040518083038186803b1580156116e257600080fd5b505afa1580156116f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171a9190612d47565b9050919050565b600061173e60016000848152602001908152602001600020611eb6565b9050919050565b6117596000801b611754611be2565b6112d0565b611798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178f906135b7565b60405180910390fd5b6127108111156117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490613637565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60065481565b61183482610717565b61184581611840611be2565b611c70565b61184f8383611d41565b505050565b60008160001080156118665750828211155b6118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90613497565b60405180910390fd5b6000612710600754866118b891906138b4565b6118c29190613883565b9050828482876118d2919061390e565b6118dc91906138b4565b6118e69190613883565b9150509392505050565b6119046000801b6118ff611be2565b6112d0565b611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a906135b7565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b61199f6000801b61199a611be2565b6112d0565b6119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d5906135b7565b60405180910390fd5b806119e88361168f565b1015611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2090613557565b60405180910390fd5b611a5433828473ffffffffffffffffffffffffffffffffffffffff16611bea9092919063ffffffff16565b5050565b611a6282826112d0565b611b3457600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ad9611be2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611b60836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611ecb565b905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bdb5750611bda82611f3b565b5b9050919050565b600033905090565b611c6b8363a9059cbb60e01b8484604051602401611c099291906133b6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611fa5565b505050565b611c7a82826112d0565b611d0957611c9f8173ffffffffffffffffffffffffffffffffffffffff16601461206c565b611cad8360001c602061206c565b604051602001611cbe92919061332a565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d009190613415565b60405180910390fd5b5050565b611d178282611a58565b611d3c8160016000858152602001908152602001600020611b3890919063ffffffff16565b505050565b611d4b82826122a8565b611d70816001600085815260200190815260200160002061238990919063ffffffff16565b505050565b600080823b905060008111915050919050565b611e0b846323b872dd60e01b858585604051602401611da99392919061337f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611fa5565b50505050565b611e1961271a565b6040518060c001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018381525090509695505050505050565b6000611e8d83600001836123b9565b60001c905092915050565b600081611ea4846123e4565b611eae9190613aa0565b905092915050565b6000611ec48260000161243f565b9050919050565b6000611ed78383612450565b611f30578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611f35565b600090505b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000612007826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124739092919063ffffffff16565b9050600081511115612067578080602001905181019061202791906129dd565b612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d90613617565b60405180910390fd5b5b505050565b60606000600283600261207f91906138b4565b612089919061382d565b67ffffffffffffffff8111156120a2576120a1613b8d565b5b6040519080825280601f01601f1916602001820160405280156120d45781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061210c5761210b613b5e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121705761216f613b5e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026121b091906138b4565b6121ba919061382d565b90505b600181111561225a577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106121fc576121fb613b5e565b5b1a60f81b82828151811061221357612212613b5e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061225390613a3b565b90506121bd565b506000841461229e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229590613437565b60405180910390fd5b8091505092915050565b6122b282826112d0565b1561238557600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061232a611be2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006123b1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61248b565b905092915050565b60008260000182815481106123d1576123d0613b5e565b5b9060005260206000200154905092915050565b600080826040516020016123f891906132bb565b6040516020818303038152906040528051906020012060001c90506103e880826124229190613883565b61242c91906138b4565b81612437919061390e565b915050919050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6060612482848460008561259f565b90509392505050565b600080836001016000848152602001908152602001600020549050600081146125935760006001826124bd919061390e565b90506000600186600001805490506124d5919061390e565b90508181146125445760008660000182815481106124f6576124f5613b5e565b5b906000526020600020015490508087600001848154811061251a57612519613b5e565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061255857612557613b2f565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612599565b60009150505b92915050565b6060824710156125e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125db906134b7565b60405180910390fd5b6125ed85611d75565b61262c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612623906135f7565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516126559190613313565b60006040518083038185875af1925050503d8060008114612692576040519150601f19603f3d011682016040523d82523d6000602084013e612697565b606091505b50915091506126a78282866126b3565b92505050949350505050565b606083156126c357829050612713565b6000835111156126d65782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270a9190613415565b60405180910390fd5b9392505050565b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600080191681526020016000801916815260200160008152602001612782612788565b81525090565b6040518060800160405280600490602082028036833780820191505090505090565b60006127bd6127b88461379d565b613778565b905080828560208602820111156127d7576127d6613bc6565b5b60005b8581101561280757816127ed8882612946565b8452602084019350602083019250506001810190506127da565b5050509392505050565b60008135905061282081613fb0565b92915050565b600082601f83011261283b5761283a613bbc565b5b60046128488482856127aa565b91505092915050565b60008151905061286081613fc7565b92915050565b60008135905061287581613fde565b92915050565b60008135905061288a81613ff5565b92915050565b60008135905061289f8161400c565b92915050565b600061012082840312156128bc576128bb613bc1565b5b6128c660c0613778565b905060006128d684828501612890565b60008301525060206128ea84828501612811565b60208301525060406128fe84828501612866565b604083015250606061291284828501612866565b606083015250608061292684828501612946565b60808301525060a061293a84828501612826565b60a08301525092915050565b60008135905061295581614023565b92915050565b60008151905061296a81614023565b92915050565b60006020828403121561298657612985613bcb565b5b600061299484828501612811565b91505092915050565b600080604083850312156129b4576129b3613bcb565b5b60006129c285828601612811565b92505060206129d385828601612946565b9150509250929050565b6000602082840312156129f3576129f2613bcb565b5b6000612a0184828501612851565b91505092915050565b600060208284031215612a2057612a1f613bcb565b5b6000612a2e84828501612866565b91505092915050565b60008060408385031215612a4e57612a4d613bcb565b5b6000612a5c85828601612866565b9250506020612a6d85828601612811565b9150509250929050565b60008060408385031215612a8e57612a8d613bcb565b5b6000612a9c85828601612866565b9250506020612aad85828601612946565b9150509250929050565b600060208284031215612acd57612acc613bcb565b5b6000612adb8482850161287b565b91505092915050565b600060208284031215612afa57612af9613bcb565b5b6000612b0884828501612890565b91505092915050565b6000806000806000806101208789031215612b2f57612b2e613bcb565b5b6000612b3d89828a01612890565b9650506020612b4e89828a01612811565b9550506040612b5f89828a01612946565b9450506060612b7089828a01612826565b93505060e0612b8189828a01612866565b925050610100612b9389828a01612866565b9150509295509295509295565b6000806000806000806000610140888a031215612bc057612bbf613bcb565b5b6000612bce8a828b01612890565b9750506020612bdf8a828b01612811565b9650506040612bf08a828b01612946565b9550506060612c018a828b01612866565b9450506080612c128a828b01612826565b935050610100612c248a828b01612866565b925050610120612c368a828b01612866565b91505092959891949750929550565b60008060008060e08587031215612c5f57612c5e613bcb565b5b6000612c6d87828801612890565b9450506020612c7e87828801612826565b93505060a0612c8f87828801612866565b92505060c0612ca087828801612866565b91505092959194509250565b60008060408385031215612cc357612cc2613bcb565b5b6000612cd185828601612890565b9250506020612ce285828601612946565b9150509250929050565b60006101208284031215612d0357612d02613bcb565b5b6000612d11848285016128a5565b91505092915050565b600060208284031215612d3057612d2f613bcb565b5b6000612d3e84828501612946565b91505092915050565b600060208284031215612d5d57612d5c613bcb565b5b6000612d6b8482850161295b565b91505092915050565b600080600060608486031215612d8d57612d8c613bcb565b5b6000612d9b86828701612946565b9350506020612dac86828701612946565b9250506040612dbd86828701612946565b9150509250925092565b6000612dd3838361329d565b60208301905092915050565b612de881613942565b82525050565b612df781613942565b82525050565b612e06816137cd565b612e1081846137fb565b9250612e1b826137c3565b8060005b83811015612e4c578151612e338782612dc7565b9650612e3e836137ee565b925050600181019050612e1f565b505050505050565b612e5d81613954565b82525050565b612e6c81613960565b82525050565b612e7b81613960565b82525050565b612e92612e8d82613960565b613a96565b82525050565b6000612ea3826137d8565b612ead8185613806565b9350612ebd818560208601613a08565b80840191505092915050565b612ed2816139d2565b82525050565b6000612ee3826137e3565b612eed8185613811565b9350612efd818560208601613a08565b612f0681613bd0565b840191505092915050565b6000612f1c826137e3565b612f268185613822565b9350612f36818560208601613a08565b80840191505092915050565b6000612f4f602083613811565b9150612f5a82613be1565b602082019050919050565b6000612f72601283613811565b9150612f7d82613c0a565b602082019050919050565b6000612f95601383613811565b9150612fa082613c33565b602082019050919050565b6000612fb8601883613811565b9150612fc382613c5c565b602082019050919050565b6000612fdb602683613811565b9150612fe682613c85565b604082019050919050565b6000612ffe601283613811565b915061300982613cd4565b602082019050919050565b6000613021601183613811565b915061302c82613cfd565b602082019050919050565b6000613044601483613811565b915061304f82613d26565b602082019050919050565b6000613067600e83613811565b915061307282613d4f565b602082019050919050565b600061308a600d83613811565b915061309582613d78565b602082019050919050565b60006130ad601183613811565b91506130b882613da1565b602082019050919050565b60006130d0601183613811565b91506130db82613dca565b602082019050919050565b60006130f3600a83613811565b91506130fe82613df3565b602082019050919050565b6000613116600d83613811565b915061312182613e1c565b602082019050919050565b6000613139601d83613811565b915061314482613e45565b602082019050919050565b600061315c601783613822565b915061316782613e6e565b601782019050919050565b600061317f602a83613811565b915061318a82613e97565b604082019050919050565b60006131a2600e83613811565b91506131ad82613ee6565b602082019050919050565b60006131c5600d83613811565b91506131d082613f0f565b602082019050919050565b60006131e8601183613822565b91506131f382613f38565b601182019050919050565b600061320b602f83613811565b915061321682613f61565b604082019050919050565b610120820160008201516132386000850182612ec9565b50602082015161324b6020850182612ddf565b50604082015161325e6040850182612e63565b5060608201516132716060850182612e63565b506080820151613284608085018261329d565b5060a082015161329760a0850182612dfd565b50505050565b6132a6816139c8565b82525050565b6132b5816139c8565b82525050565b60006132c78284612e81565b60208201915081905092915050565b60006132e28286612e81565b6020820191506132f28285612e81565b6020820191506133028284612e81565b602082019150819050949350505050565b600061331f8284612e98565b915081905092915050565b60006133358261314f565b91506133418285612f11565b915061334c826131db565b91506133588284612f11565b91508190509392505050565b60006020820190506133796000830184612dee565b92915050565b60006060820190506133946000830186612dee565b6133a16020830185612dee565b6133ae60408301846132ac565b949350505050565b60006040820190506133cb6000830185612dee565b6133d860208301846132ac565b9392505050565b60006020820190506133f46000830184612e54565b92915050565b600060208201905061340f6000830184612e72565b92915050565b6000602082019050818103600083015261342f8184612ed8565b905092915050565b6000602082019050818103600083015261345081612f42565b9050919050565b6000602082019050818103600083015261347081612f65565b9050919050565b6000602082019050818103600083015261349081612f88565b9050919050565b600060208201905081810360008301526134b081612fab565b9050919050565b600060208201905081810360008301526134d081612fce565b9050919050565b600060208201905081810360008301526134f081612ff1565b9050919050565b6000602082019050818103600083015261351081613014565b9050919050565b6000602082019050818103600083015261353081613037565b9050919050565b600060208201905081810360008301526135508161305a565b9050919050565b600060208201905081810360008301526135708161307d565b9050919050565b60006020820190508181036000830152613590816130a0565b9050919050565b600060208201905081810360008301526135b0816130c3565b9050919050565b600060208201905081810360008301526135d0816130e6565b9050919050565b600060208201905081810360008301526135f081613109565b9050919050565b600060208201905081810360008301526136108161312c565b9050919050565b6000602082019050818103600083015261363081613172565b9050919050565b6000602082019050818103600083015261365081613195565b9050919050565b60006020820190508181036000830152613670816131b8565b9050919050565b60006020820190508181036000830152613690816131fe565b9050919050565b6000610120820190506136ad6000830184613221565b92915050565b6000610160820190506136c96000830186613221565b6136d76101208301856132ac565b6136e56101408301846132ac565b949350505050565b600060208201905061370260008301846132ac565b92915050565b600060408201905061371d60008301856132ac565b61372a60208301846132ac565b9392505050565b60006101808201905061374760008301876132ac565b61375460208301866132ac565b6137616040830185613221565b61376f610160830184612e72565b95945050505050565b6000613782613793565b905061378e8282613a65565b919050565b6000604051905090565b600067ffffffffffffffff8211156137b8576137b7613b8d565b5b602082029050919050565b6000819050919050565b600060049050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613838826139c8565b9150613843836139c8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561387857613877613ad1565b5b828201905092915050565b600061388e826139c8565b9150613899836139c8565b9250826138a9576138a8613b00565b5b828204905092915050565b60006138bf826139c8565b91506138ca836139c8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561390357613902613ad1565b5b828202905092915050565b6000613919826139c8565b9150613924836139c8565b92508282101561393757613936613ad1565b5b828203905092915050565b600061394d826139a8565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006139a182613942565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006139dd826139e4565b9050919050565b60006139ef826139f6565b9050919050565b6000613a01826139a8565b9050919050565b60005b83811015613a26578082015181840152602081019050613a0b565b83811115613a35576000848401525b50505050565b6000613a46826139c8565b91506000821415613a5a57613a59613ad1565b5b600182039050919050565b613a6e82613bd0565b810181811067ffffffffffffffff82111715613a8d57613a8c613b8d565b5b80604052505050565b6000819050919050565b6000613aab826139c8565b9150613ab6836139c8565b925082613ac657613ac5613b00565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f4245542d414d4f554e542d544f4f2d4c4f570000000000000000000000000000600082015250565b7f57494e2d414d4f554e542d544f4f2d4849474800000000000000000000000000600082015250565b7f50524f424142494c4954592d4f55542d4f462d52414e47450000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f494e56414c49442d524f4c4c2d56414c55450000000000000000000000000000600082015250565b7f6e6f20696e6469726563742063616c6c73000000000000000000000000000000600082015250565b7f494e56414c49442d4d4f44554c4f2d56414c5545000000000000000000000000600082015250565b7f4f4e4c592d5245414c2d4e554c4c000000000000000000000000000000000000600082015250565b7f544f4f2d4c4f572d46554e445300000000000000000000000000000000000000600082015250565b7f4245542d4e4f542d434f4d504c45544544000000000000000000000000000000600082015250565b7f4245542d414c52454144592d4558495354000000000000000000000000000000600082015250565b7f4f4e4c592d41444d494e00000000000000000000000000000000000000000000600082015250565b7f4245542d4e4f542d464f554e4400000000000000000000000000000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f4e4f2d504552432d504f494e5453000000000000000000000000000000000000600082015250565b7f4f4e4c592d43524f555049455200000000000000000000000000000000000000600082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b613fb981613942565b8114613fc457600080fd5b50565b613fd081613954565b8114613fdb57600080fd5b50565b613fe781613960565b8114613ff257600080fd5b50565b613ffe8161396a565b811461400957600080fd5b50565b61401581613996565b811461402057600080fd5b50565b61402c816139c8565b811461403757600080fd5b5056fea26469706673582212202cfe85377d09e8dbb4f342173dc2212cfb4203c3b834fb5b5666a8ab08a47aec64736f6c63430008070033