85 txs
15.4k calls
constructor
constructor(uint256 _LINK_FEE_BALANCE_DIVIDER, address _linkToken, address _gToken, address[] _oracles, bytes32 _job, uint256 _minAnswers)
functions
gToken
viewfunction gToken() view returns (address)
job
viewfunction job() view returns (bytes32)
lastRequestId
viewfunction lastRequestId() view returns (uint256)
LINK_FEE_BALANCE_DIVIDER
viewfunction LINK_FEE_BALANCE_DIVIDER() view returns (uint256)
minAnswers
viewfunction minAnswers() view returns (uint256)
nextEpochValues
viewfunction nextEpochValues(uint256) view returns (int256)
nextEpochValuesLastRequest
viewfunction nextEpochValuesLastRequest() view returns (uint256)
nextEpochValuesRequestCount
viewfunction nextEpochValuesRequestCount() view returns (uint256)
oracles
viewfunction oracles(uint256) view returns (address)
requestAnswers
viewfunction requestAnswers(uint256, uint256) view returns (int256)
requestIds
viewfunction requestIds(bytes32) view returns (uint256)
requests
viewfunction requests(uint256) view returns (bool initiated, bool active, uint256 linkFeePerNode)
requestsCount
viewfunction requestsCount() view returns (uint256)
requestsEvery
viewfunction requestsEvery() view returns (uint256)
requestsStart
viewfunction requestsStart() view returns (uint256)
forceNewEpoch
nonpayablefunction forceNewEpoch()
fulfill
nonpayablefunction fulfill(bytes32 requestId, int256 value)
newOpenPnlRequestOrEpoch
nonpayablefunction newOpenPnlRequestOrEpoch()
resetNextEpochValueRequests
nonpayablefunction resetNextEpochValueRequests()
updateJob
nonpayablefunction updateJob(bytes32 newValue)
updateMinAnswers
nonpayablefunction updateMinAnswers(uint256 newValue)
updateOracle
nonpayablefunction updateOracle(uint256 _index, address newValue)
updateOracles
nonpayablefunction updateOracles(address[] newValues)
updateRequestsCount
nonpayablefunction updateRequestsCount(uint256 newValue)
updateRequestsEvery
nonpayablefunction updateRequestsEvery(uint256 newValue)
updateRequestsInfoBatch
nonpayablefunction updateRequestsInfoBatch(uint256 newRequestsStart, uint256 newRequestsEvery, uint256 newRequestsCount)
updateRequestsStart
nonpayablefunction updateRequestsStart(uint256 newValue)
events
ChainlinkCancelled
event ChainlinkCancelled(bytes32 indexed id)
ChainlinkFulfilled
event ChainlinkFulfilled(bytes32 indexed id)
ChainlinkRequested
event ChainlinkRequested(bytes32 indexed id)
JobUpdated
event JobUpdated(bytes32 newValue)
NewEpoch
event NewEpoch(uint256 indexed newEpoch, uint256 indexed requestId, int256[] epochMedianValues, int256 epochAverageValue, uint256 newEpochPositiveOpenPnl)
NewEpochForced
event NewEpochForced(uint256 indexed newEpoch)
NextEpochValueRequested
event NextEpochValueRequested(uint256 indexed currEpoch, uint256 indexed requestId, bytes32 job, uint256 oraclesCount, uint256 linkFeePerNode)
NextEpochValuesReset
event NextEpochValuesReset(uint256 indexed currEpoch, uint256 requestsResetCount)
NumberParamUpdated
event NumberParamUpdated(string name, uint256 newValue)
OraclesUpdated
event OraclesUpdated(address[] newValues)
OracleUpdated
event OracleUpdated(uint256 index, address newValue)
RequestMedianValueSet
event RequestMedianValueSet(uint256 indexed currEpoch, uint256 indexed requestId, int256[] requestValues, int256 medianValue)
RequestValueReceived
event RequestValueReceived(bool isLate, uint256 indexed currEpoch, uint256 indexed requestId, bytes32 oracleRequestId, address indexed oracle, int256 requestValue, uint256 linkFee)
errors
No errors.
creation bytecode
0x60c060405260016004556202a30060065561546060075560046008553480156200002857600080fd5b5060405162002caf38038062002caf8339810160408190526200004b9162000208565b6000861180156200006457506001600160a01b03851615155b80156200007957506001600160a01b03841615155b801562000087575060008351115b80156200009357508115155b8015620000a1575060028110155b8015620000af575082518111155b620000ef5760405162461bcd60e51b815260206004820152600c60248201526b57524f4e475f504152414d5360a01b604482015260640160405180910390fd5b6080869052600280546001600160a01b0319166001600160a01b0387161790556001600160a01b03841660a05282516200013190600990602086019062000146565b50600a91909155600b55506200032392505050565b8280548282559060005260206000209081019282156200019e579160200282015b828111156200019e57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000167565b50620001ac929150620001b0565b5090565b5b80821115620001ac5760008155600101620001b1565b6001600160a01b0381168114620001dd57600080fd5b50565b8051620001ed81620001c7565b919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c087890312156200022257600080fd5b865195506020808801516200023781620001c7565b60408901519096506200024a81620001c7565b60608901519095506001600160401b03808211156200026857600080fd5b818a0191508a601f8301126200027d57600080fd5b815181811115620002925762000292620001f2565b8060051b604051601f19603f83011681018181108582111715620002ba57620002ba620001f2565b60405291825284820192508381018501918d831115620002d957600080fd5b938501935b828510156200030257620002f285620001e0565b84529385019392850192620002de565b8098505050505050506080870151915060a087015190509295509295509295565b60805160a0516128e8620003c760003960008181610244015281816103f0015281816105b40152818161079301528181610929015281816109e101528181610b1e01528181610c8e01528181610fa0015281816111bd015281816112a8015281816113c3015281816115ba015281816116cf01528181611b2201528181611c0201528181611cf90152611da301526000818161039f015261197601526128e86000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c8063a90d67a1116100f9578063cb9945a111610097578063e704fc5111610071578063e704fc51146103c1578063f5ed447c146103c9578063fbfa4b7f146103dc578063fc2a88c3146103e557600080fd5b8063cb9945a114610374578063ce43963214610387578063d5a28da31461039a57600080fd5b8063bda71d04116100d3578063bda71d041461033d578063bea1675814610350578063bef35b7914610359578063c591ff4c1461036157600080fd5b8063a90d67a114610318578063b006812c14610321578063b8feee641461033457600080fd5b806376ffb9bd1161016657806392c3c58b1161014057806392c3c58b146102d75780639496f9e3146102df5780639dbc2686146102f2578063a5c2aafd1461030557600080fd5b806376ffb9bd1461023f57806381d12c58146102665780638645f7a8146102b757600080fd5b80635614a211116101975780635614a211146101f857806358e7ec3c1461020b5780635b69a7d81461021457600080fd5b80632eb64ec4146101be57806334fa54a1146101da578063473d2f21146101ef575b600080fd5b6101c760065481565b6040519081526020015b60405180910390f35b6101ed6101e8366004612407565b6103ee565b005b6101c7600e5481565b6101ed610206366004612407565b6105b2565b6101c7600a5481565b610227610222366004612407565b610767565b6040516001600160a01b0390911681526020016101d1565b6102277f000000000000000000000000000000000000000000000000000000000000000081565b61029a610274366004612407565b6011602052600090815260409020805460019091015460ff808316926101009004169083565b6040805193151584529115156020840152908201526060016101d1565b6101c76102c5366004612407565b60106020526000908152604090205481565b6101ed610791565b6101ed6102ed366004612407565b6109df565b6101ed61030036600461245b565b610b1c565b6101ed610313366004612407565b610c8c565b6101c760075481565b6101c761032f366004612407565b610e44565b6101c7600d5481565b6101ed61034b366004612520565b610e65565b6101c7600b5481565b6101ed6111ac565b6101ed61036f366004612542565b6112a6565b6101c7610382366004612520565b611390565b6101ed61039536600461256e565b6113c1565b6101c77f000000000000000000000000000000000000000000000000000000000000000081565b6101ed61159b565b6101ed6103d7366004612407565b6116cd565b6101c760085481565b6101c7600f5481565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561044c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610470919061259e565b6001600160a01b0316336001600160a01b0316146104c25760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b60448201526064015b60405180910390fd5b610e108110156105005760405162461bcd60e51b81526020600482015260096024820152682122a627abafa6a4a760b91b60448201526064016104b9565b6201518081111561053f5760405162461bcd60e51b8152602060048201526009602482015268082849eac8abe9a82b60bb1b60448201526064016104b9565b600781905560408051818152600d918101919091527f72657175657374734576657279000000000000000000000000000000000000006060820152602081018290527f127735ae9d047cae55da37db2c8ee184c735aacd68cef068d4e70be6a41661d9906080015b60405180910390a150565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610610573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610634919061259e565b6001600160a01b0316336001600160a01b0316146106815760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b60448201526064016104b9565b60038110156106be5760405162461bcd60e51b81526020600482015260096024820152682122a627abafa6a4a760b91b60448201526064016104b9565b600a8111156106fb5760405162461bcd60e51b8152602060048201526009602482015268082849eac8abe9a82b60bb1b60448201526064016104b9565b600881905560408051818152600d918101919091527f7265717565737473436f756e74000000000000000000000000000000000000006060820152602081018290527f127735ae9d047cae55da37db2c8ee184c735aacd68cef068d4e70be6a41661d9906080016105a7565b6009818154811061077757600080fd5b6000918252602090912001546001600160a01b0316905081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610813919061259e565b6001600160a01b0316336001600160a01b0316146108735760405162461bcd60e51b815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016104b9565b600d54806108c35760405162461bcd60e51b815260206004820152601360248201527f4e4f5f524551554553545f544f5f52455345540000000000000000000000000060448201526064016104b9565b6108cf600c600061236f565b6000600d819055600e8190555b818110156109265760006011600083600f546108f891906125d1565b8152602081019190915260400160002080549115156101000261ff00199092169190911790556001016108dc565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663766718086040518163ffffffff1660e01b8152600401602060405180830381865afa158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a991906125e4565b6040518281527f605f3f824643ee56deaf2717c1581f7ad3df423365aede8e2d771b6b3a30fd2b9060200160405180910390a250565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663481c6a756040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a61919061259e565b6001600160a01b0316336001600160a01b031614610ab05760405162461bcd60e51b815260206004820152600c60248201526b27a7262cafa6a0a720a3a2a960a11b60448201526064016104b9565b80610ae75760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b60448201526064016104b9565b600a8190556040518181527f9f3fa8c139076940687248e93aed7dda099cf9a90cc38c428cf3d5b6b642fdd4906020016105a7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9e919061259e565b6001600160a01b0316336001600160a01b031614610beb5760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b60448201526064016104b9565b600b54610bf99060026125fd565b81511015610c495760405162461bcd60e51b815260206004820152600f60248201527f41525241595f544f4f5f534d414c4c000000000000000000000000000000000060448201526064016104b9565b8051610c5c90600990602084019061238d565b507f4b806663ee384a0ada322e70cdf3fd2046424181359f2470a97a6f0cec328e9c816040516105a79190612614565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0e919061259e565b6001600160a01b0316336001600160a01b031614610d5b5760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b60448201526064016104b9565b610e10811015610d995760405162461bcd60e51b81526020600482015260096024820152682122a627abafa6a4a760b91b60448201526064016104b9565b62093a80811115610dd85760405162461bcd60e51b8152602060048201526009602482015268082849eac8abe9a82b60bb1b60448201526064016104b9565b600681905560408051818152600d918101919091527f72657175657374735374617274000000000000000000000000000000000000006060820152602081018290527f127735ae9d047cae55da37db2c8ee184c735aacd68cef068d4e70be6a41661d9906080016105a7565b600c8181548110610e5457600080fd5b600091825260209091200154905081565b60008281526005602052604090205482906001600160a01b03163314610ef35760405162461bcd60e51b815260206004820152602860248201527f536f75726365206d75737420626520746865206f7261636c65206f662074686560448201527f207265717565737400000000000000000000000000000000000000000000000060648201526084016104b9565b60008181526005602052604080822080546001600160a01b03191690555182917f7cc135e0cebb02c3480ae5d74d377283180a2601f8f644edf7987b009316c63a91a26000838152601060209081526040808320805490849055808452601183528184208251606081018452815460ff808216151583526101009091041615158186015260019190910154818401528251630ecce30160e31b815292519194909390926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926376671808926004808401939192918290030181865afa158015610fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100d91906125e4565b6020808401516040808601518151921583529282018a9052810188905260608101919091529091503390849083907f5e18490ff1cb10067b5d5b0aec04678191bb80c2d229a2578526c389270027bf9060800160405180910390a4816020015161107957505050505050565b6000838152601260209081526040822080546001810182558184529190922001869055600b548154036111a2576000611100828054806020026020016040519081016040528092919081815260200182805480156110f657602002820191906000526020600020905b8154815260200190600101908083116110e2575b5050505050611891565b600c80546001810182556000919091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c701819055604051909150859084907f2cc31a5acf549ee44228d82c08e88b92b9d332ad5193a2290a79345e113c0b4c9061116e90869086906126a2565b60405180910390a36000858152601160209081526040808320805461ff0019169055601290915281206111a09161236f565b505b505050505b505050565b600e541580801561124a57506006547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361a8c8c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d91906125e4565b61124790426125d1565b10155b1561125a57611257611955565b50565b801580156112765750600754600e5461127390426125d1565b10155b1561125757600854600d54101561128f57611257611955565b600854600c5410611257576112a2611bed565b5050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611304573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611328919061259e565b6001600160a01b0316336001600160a01b0316146113755760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b60448201526064016104b9565b61137e83610c8c565b611387826103ee565b6111a7816105b2565b601260205281600052604060002081815481106113ac57600080fd5b90600052602060002001600091509150505481565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561141f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611443919061259e565b6001600160a01b0316336001600160a01b0316146114905760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b60448201526064016104b9565b60095482106114e15760405162461bcd60e51b815260206004820152600d60248201527f494e4445585f544f4f5f4249470000000000000000000000000000000000000060448201526064016104b9565b6001600160a01b0381166115215760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b60448201526064016104b9565b8060098381548110611535576115356126c4565b60009182526020918290200180546001600160a01b0319166001600160a01b0393841617905560408051858152928416918301919091527f8323208263554cf72b3658bcdbd0f96f4ccf2c9c919fa30246aaee34537b5509910160405180910390a15050565b6008546007546115ab91906125fd565b6006546115b891906126da565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361a8c8c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163a91906125e4565b61164490426125d1565b10156116925760405162461bcd60e51b815260206004820152600960248201527f544f4f5f4541524c59000000000000000000000000000000000000000000000060448201526064016104b9565b600061169c611bed565b60405190915081907f446b8726654d216fe9781583f0f34cc8ac84d240bb3ad5293c10e2ff831f1eb290600090a250565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663481c6a756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174f919061259e565b6001600160a01b0316336001600160a01b03161461179e5760405162461bcd60e51b815260206004820152600c60248201526b27a7262cafa6a0a720a3a2a960a11b60448201526064016104b9565b60028110156117db5760405162461bcd60e51b81526020600482015260096024820152682122a627abafa6a4a760b91b60448201526064016104b9565b6009546117ea90600290612703565b8111156118255760405162461bcd60e51b8152602060048201526009602482015268082849eac8abe9a82b60bb1b60448201526064016104b9565b600b81905560408051818152600a918101919091527f6d696e416e7377657273000000000000000000000000000000000000000000006060820152602081018290527f127735ae9d047cae55da37db2c8ee184c735aacd68cef068d4e70be6a41661d9906080016105a7565b60006118a08260008451611e77565b600282516118ae9190612717565b156118df5781600283516118c29190612703565b815181106118d2576118d26126c4565b602002602001015161194f565b600282600284516118f09190612703565b81518110611900576119006126c4565b6020026020010151836001600286516119199190612703565b61192391906125d1565b81518110611933576119336126c4565b6020026020010151611945919061272b565b61194f9190612753565b92915050565b600061196b600a543063bda71d0460e01b611f32565b6009549091506000907f00000000000000000000000000000000000000000000000000000000000000006119a76002546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1191906125e4565b611a1b9190612703565b611a259190612703565b905060405180606001604052806001151581526020016001151581526020018281525060116000600f60008154611a5b90612781565b9182905550815260208082019290925260409081016000908120845181549486015161ffff1990951690151561ff0019161761010094151594909402939093178355920151600190910155600d805491611ab483612781565b909155505042600e5560005b600954811015611b1c57600f5460106000611b0360098581548110611ae757611ae76126c4565b6000918252602090912001546001600160a01b03168787611fc3565b8152602081019190915260400160002055600101611ac0565b50600f547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663766718086040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba291906125e4565b600a5460095460408051928352602083019190915281018490527fb5f2943c67db1794f39a3b46b95086765f48c7e05d12851dc6607bcdb0bcc7a39060600160405180910390a35050565b600080600d819055506000600e8190555060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663faf33f296040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8291906125e4565b600854600c549192506000911015611c9a5781611cf3565b611cf3600c805480602002602001604051908101604052809291908181526020018280548015611ce957602002820191906000526020600020905b815481526020019060010190808311611cd5575b505050505061206b565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637361a5448460008513611d36576000611d38565b845b6040516001600160e01b031960e085901b168152600481019290925260248201526044016020604051808303816000875af1158015611d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9f91906125e4565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663766718086040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2391906125e4565b9350600f54847f263c5efc95bb2e2134e3fc52ae914fbd38e2381f37d95ae011a56f996578bf17600c8585604051611e5d9392919061279a565b60405180910390a3611e71600c600061236f565b50505090565b808210611e8357505050565b60008290506000848281518110611e9c57611e9c6126c4565b602002602001015190506000846001611eb591906126da565b90505b83811015611eff5781868281518110611ed357611ed36126c4565b60200260200101511215611ef757611ef78682611eef86612781565b9550856120bd565b600101611eb8565b50611f0b8585846120bd565b611f16858584611e77565b611f2b85611f258460016126da565b85611e77565b5050505050565b611f706040805160a0810182526000808252602080830182905282840182905260608084018390528451808601909552845283015290608082015290565b611fae6040805160a0810182526000808252602080830182905282840182905260608084018390528451808601909552845283015290608082015290565b611fba81868686612130565b95945050505050565b600454600090611fd48160016126da565b600455835160408086015160808701515191516000936320214ca360e11b9361200c9386938493923092918a91600191602401612805565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909316929092179091529050612061868386846121ac565b9695505050505050565b60008060005b83518110156120a95783818151811061208c5761208c6126c4565b60200260200101518261209f919061272b565b9150600101612071565b5082516120b69082612753565b9392505050565b8281815181106120cf576120cf6126c4565b60200260200101518383815181106120e9576120e96126c4565b6020026020010151848481518110612103576121036126c4565b6020026020010185848151811061211c5761211c6126c4565b602090810291909101019190915252505050565b61216e6040805160a0810182526000808252602080830182905282840182905260608084018390528451808601909552845283015290608082015290565b61217e856080015161010061230a565b50508284526001600160a01b03821660208501526001600160e01b031981166040850152835b949350505050565b6040516bffffffffffffffffffffffff193060601b1660208201526034810184905260009060540160408051808303601f1901815282825280516020918201206000818152600590925291812080546001600160a01b0319166001600160a01b038a1617905590925082917fb5e6e01e79f91267dc17b4e6314d5d4d03593d2ceee0fbb452b750bd70ea5af99190a2600254604051630200057560e51b81526001600160a01b0390911690634000aea09061226f90889087908790600401612868565b6020604051808303816000875af115801561228e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b29190612890565b6121a45760405162461bcd60e51b815260206004820152602360248201527f756e61626c6520746f207472616e73666572416e6443616c6c20746f206f7261604482015262636c6560e81b60648201526084016104b9565b60408051808201909152606081526000602082015261232a602083612717565b156123525761233a602083612717565b6123459060206125d1565b61234f90836126da565b91505b506020828101829052604080518085526000815290920101905290565b508054600082559060005260206000209081019061125791906123f2565b8280548282559060005260206000209081019282156123e2579160200282015b828111156123e257825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906123ad565b506123ee9291506123f2565b5090565b5b808211156123ee57600081556001016123f3565b60006020828403121561241957600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461125757600080fd5b803561245681612436565b919050565b6000602080838503121561246e57600080fd5b823567ffffffffffffffff8082111561248657600080fd5b818501915085601f83011261249a57600080fd5b8135818111156124ac576124ac612420565b8060051b604051601f19603f830116810181811085821117156124d1576124d1612420565b6040529182528482019250838101850191888311156124ef57600080fd5b938501935b82851015612514576125058561244b565b845293850193928501926124f4565b98975050505050505050565b6000806040838503121561253357600080fd5b50508035926020909101359150565b60008060006060848603121561255757600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561258157600080fd5b82359150602083013561259381612436565b809150509250929050565b6000602082840312156125b057600080fd5b81516120b681612436565b634e487b7160e01b600052601160045260246000fd5b8181038181111561194f5761194f6125bb565b6000602082840312156125f657600080fd5b5051919050565b808202811582820484141761194f5761194f6125bb565b6020808252825182820181905260009190848201906040850190845b818110156126555783516001600160a01b031683529284019291840191600101612630565b50909695505050505050565b600081548084526020808501945083600052602060002060005b838110156126975781548752958201956001918201910161267b565b509495945050505050565b6040815260006126b56040830185612661565b90508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b8082018082111561194f5761194f6125bb565b634e487b7160e01b600052601260045260246000fd5b600082612712576127126126ed565b500490565b600082612726576127266126ed565b500690565b808201828112600083128015821682158216171561274b5761274b6125bb565b505092915050565b600082612762576127626126ed565b600160ff1b82146000198414161561277c5761277c6125bb565b500590565b600060018201612793576127936125bb565b5060010190565b6060815260006127ad6060830186612661565b60208301949094525060400152919050565b6000815180845260005b818110156127e5576020818501810151868301820152016127c9565b506000602082860101526020601f19601f83011685010191505092915050565b60006101006001600160a01b03808c1684528a602085015289604085015280891660608501525063ffffffff60e01b871660808401528560a08401528460c08401528060e0840152612859818401856127bf565b9b9a5050505050505050505050565b6001600160a01b0384168152826020820152606060408201526000611fba60608301846127bf565b6000602082840312156128a257600080fd5b815180151581146120b657600080fdfea264697066735822122091f26f51e786ab1e8a40774ce236d4d4743b7415c09dd7c4ad482e7f426233a864736f6c634300081700330000000000000000000000000000000000000000000000000000000000000064000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb40000000000000000000000004beef1113f968326905224d2ca272f3032a9a9f400000000000000000000000000000000000000000000000000000000000000c0643431373734366464363632346565326236643733316465396434636464333700000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000001467a230d332f218187ffafb8ec0f0000000000000000000000000000000000020a4c8cb0fab88633e7b025c548970000000000000000000000000000000000034abbb84a1bf4a9e99a39402c29a0000000000000000000000000000000000004e6949c40c5abbd2e9cff291a62d2000000000000000000000000000000000005bac754a50d9f3867f49c00c3b07b