0 txs
1 call
constructor
constructor(address _tellerV2, address _marketRegistry)
functions
_marketRegistry
viewfunction _marketRegistry() view returns (address)
_tellerV2
viewfunction _tellerV2() view returns (address)
commitmentPrincipalAccepted
viewfunction commitmentPrincipalAccepted(uint256) view returns (uint256)
commitments
viewfunction commitments(uint256) view returns (uint256 maxPrincipal, uint32 expiration, uint32 maxDuration, uint16 minInterestRate, address collateralTokenAddress, uint256 collateralTokenId, uint256 maxPrincipalPerCollateralAmount, uint8 collateralTokenType, address lender, uint256 marketId, address principalTokenAddress)
getCommitmentAcceptedPrincipal
viewfunction getCommitmentAcceptedPrincipal(uint256 _commitmentId) view returns (uint256)
getCommitmentBorrowers
viewfunction getCommitmentBorrowers(uint256 _commitmentId) view returns (address[] borrowers_)
getCommitmentLender
viewfunction getCommitmentLender(uint256 _commitmentId) view returns (address)
getCommitmentMarketId
viewfunction getCommitmentMarketId(uint256 _commitmentId) view returns (uint256)
getCommitmentMaxPrincipal
viewfunction getCommitmentMaxPrincipal(uint256 _commitmentId) view returns (uint256)
getMarketRegistry
viewfunction getMarketRegistry() view returns (address)
getRequiredCollateral
viewfunction getRequiredCollateral(uint256 _principalAmount, uint256 _maxPrincipalPerCollateralAmount, uint8 _collateralTokenType, address _collateralTokenAddress, address _principalTokenAddress) view returns (uint256)
getTellerV2
viewfunction getTellerV2() view returns (address)
hasExtension
viewfunction hasExtension(address account, address extension) view returns (bool)
acceptCommitment
nonpayablefunction acceptCommitment(uint256 _commitmentId, uint256 _principalAmount, uint256 _collateralAmount, uint256 _collateralTokenId, address _collateralTokenAddress, uint16 _interestRate, uint32 _loanDuration) returns (uint256 bidId)
acceptCommitmentWithProof
nonpayablefunction acceptCommitmentWithProof(uint256 _commitmentId, uint256 _principalAmount, uint256 _collateralAmount, uint256 _collateralTokenId, address _collateralTokenAddress, uint16 _interestRate, uint32 _loanDuration, bytes32[] _merkleProof) returns (uint256 bidId)
acceptCommitmentWithRecipient
nonpayablefunction acceptCommitmentWithRecipient(uint256 _commitmentId, uint256 _principalAmount, uint256 _collateralAmount, uint256 _collateralTokenId, address _collateralTokenAddress, address _recipient, uint16 _interestRate, uint32 _loanDuration) returns (uint256 bidId)
acceptCommitmentWithRecipientAndProof
nonpayablefunction acceptCommitmentWithRecipientAndProof(uint256 _commitmentId, uint256 _principalAmount, uint256 _collateralAmount, uint256 _collateralTokenId, address _collateralTokenAddress, address _recipient, uint16 _interestRate, uint32 _loanDuration, bytes32[] _merkleProof) returns (uint256 bidId)
addCommitmentBorrowers
nonpayablefunction addCommitmentBorrowers(uint256 _commitmentId, address[] _borrowerAddressList)
addExtension
nonpayablefunction addExtension(address extension)
createCommitment
nonpayablefunction createCommitment(tuple _commitment, address[] _borrowerAddressList) returns (uint256 commitmentId_)
deleteCommitment
nonpayablefunction deleteCommitment(uint256 _commitmentId)
getTellerV2MarketOwner
nonpayablefunction getTellerV2MarketOwner(uint256 marketId) returns (address)
removeCommitmentBorrowers
nonpayablefunction removeCommitmentBorrowers(uint256 _commitmentId, address[] _borrowerAddressList)
revokeExtension
nonpayablefunction revokeExtension(address extension)
updateCommitment
nonpayablefunction updateCommitment(uint256 _commitmentId, tuple _commitment)
events
CreatedCommitment
event CreatedCommitment(uint256 indexed commitmentId, address lender, uint256 marketId, address lendingToken, uint256 tokenAmount)
DeletedCommitment
event DeletedCommitment(uint256 indexed commitmentId)
ExercisedCommitment
event ExercisedCommitment(uint256 indexed commitmentId, address borrower, uint256 tokenAmount, uint256 bidId)
ExtensionAdded
event ExtensionAdded(address extension, address sender)
ExtensionRevoked
event ExtensionRevoked(address extension, address sender)
Initialized
event Initialized(uint8 version)
UpdatedCommitment
event UpdatedCommitment(uint256 indexed commitmentId, address lender, uint256 marketId, address lendingToken, uint256 tokenAmount)
UpdatedCommitmentBorrowers
event UpdatedCommitmentBorrowers(uint256 indexed commitmentId)
errors
InsufficientBorrowerCollateral
error InsufficientBorrowerCollateral(uint256 required, uint256 actual)
InsufficientCommitmentAllocation
error InsufficientCommitmentAllocation(uint256 allocated, uint256 requested)
creation bytecode
0x60c06040523480156200001157600080fd5b5060405162002ee638038062002ee6833981016040819052620000349162000138565b6001600160a01b03808316608052811660a0526200005162000059565b505062000170565b600054610100900460ff1615620000c65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000119576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200013357600080fd5b919050565b600080604083850312156200014c57600080fd5b62000157836200011b565b915062000167602084016200011b565b90509250929050565b60805160a051612d34620001b2600039600081816103f1015281816104ad01526108cd01526000818161042a015281816104660152611e580152612d346000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636caa6344116100de578063c66b8ed211610097578063e767e97311610071578063e767e9731461044e578063eafef46e14610461578063f33b832014610488578063fd7b2d91146104a857600080fd5b8063c66b8ed2146103ef578063cd47bfb414610415578063dc003d5a1461042857600080fd5b80636caa6344146103635780637479208b146103835780637d458e7b14610396578063a769310a146103b6578063bfb40bc0146103c9578063c1abfa11146103dc57600080fd5b806331a1afb91161013057806331a1afb91461025257806332b3f91d1461027557806349ce8997146102885780634bfc44011461032a5780634f878e461461033d578063592113d01461035057600080fd5b80630a706955146101785780631409a2e4146101a0578063170ff3e1146101b55780631dcaa70d146101c85780632888115a146101f357806329a21e4214610224575b600080fd5b61018b6101863660046121a0565b6104cf565b60405190151581526020015b60405180910390f35b6101b36101ae3660046121f2565b6104ff565b005b6101b36101c3366004612220565b610787565b6101db6101d636600461223d565b6108ac565b6040516001600160a01b039091168152602001610197565b6101db61020136600461223d565b60009081526065602052604090206004015461010090046001600160a01b031690565b61024461023236600461223d565b60009081526068602052604090205490565b604051908152602001610197565b61024461026036600461223d565b60009081526065602052604090206005015490565b6101b36102833660046122a2565b610947565b61031361029636600461223d565b6065602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949563ffffffff8086169664010000000087049091169561ffff600160401b820416956001600160a01b03600160501b9092048216959094909360ff8216936101009092048316929091168b565b6040516101979b9a99989796959493929190612304565b6102446103383660046123c2565b6109a2565b6101b361034b3660046122a2565b610a07565b61024461035e366004612447565b610a5c565b61024461037136600461223d565b60686020526000908152604090205481565b6102446103913660046124c6565b610a7b565b6103a96103a436600461223d565b610bd1565b6040516101979190612525565b6101b36103c4366004612220565b610beb565b6101b36103d736600461223d565b610c5b565b6102446103ea366004612572565b610d4a565b7f00000000000000000000000000000000000000000000000000000000000000006101db565b6102446104233660046125af565b610e9c565b7f00000000000000000000000000000000000000000000000000000000000000006101db565b61024461045c366004612654565b610ebf565b6101db7f000000000000000000000000000000000000000000000000000000000000000081565b61024461049636600461223d565b60009081526065602052604090205490565b6101db7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0380831660009081526069602090815260408083209385168352929052205460ff165b92915050565b81610508610fd7565b60008281526065602052604090206004015461010090046001600160a01b039081169116146105525760405162461bcd60e51b81526004016105499061270d565b60405180910390fd5b61055a610fd7565b6001600160a01b031661057561012084016101008501612220565b6001600160a01b0316146105d75760405162461bcd60e51b8152602060048201526024808201527f436f6d6d69746d656e74206c656e6465722063616e6e6f7420626520757064616044820152633a32b21760e11b6064820152608401610549565b6000838152606560205260409020600601546001600160a01b031661060461016084016101408501612220565b6001600160a01b03161461066d5760405162461bcd60e51b815260206004820152602a60248201527f5072696e636970616c20746f6b656e20616464726573732063616e6e6f74206260448201526932903ab83230ba32b21760b11b6064820152608401610549565b600083815260656020526040902060050154610120830135146106d25760405162461bcd60e51b815260206004820152601c60248201527f4d61726b65742049642063616e6e6f7420626520757064617465642e000000006044820152606401610549565b600083815260656020526040902082906106ec828261279b565b5050600083815260656020526040902061070590610fe6565b827f3639fd8e82fc21d99ff6df2a4a03995fa53f752fddd525d8a9aadccefa788aa061073961012085016101008601612220565b61012085013561075161016087016101408801612220565b604080516001600160a01b03948516815260208101939093529216818301528535606082015290519081900360800190a2505050565b806001600160a01b0316610799610fd7565b6001600160a01b031614156108165760405162461bcd60e51b815260206004820152603a60248201527f457874656e73696f6e73436f6e746578745570677261646561626c653a20636160448201527f6e6e6f7420617070726f7665206f776e20657874656e73696f6e0000000000006064820152608401610549565b600160696000610824610fd7565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020805460ff19169115159190911790557fa9e5a03abaf4ebb6969200baf2ad7c42a89f86f7801a1689f0ba767a6e2fd5f081610886610fd7565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b604051633d36902960e01b8152600481018290526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d3690299060240160206040518083038186803b15801561090f57600080fd5b505afa158015610923573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f99190612921565b82610950610fd7565b60008281526065602052604090206004015461010090046001600160a01b039081169116146109915760405162461bcd60e51b81526004016105499061270d565b61099c848484611194565b50505050565b6000600560008a81526065602052604090206004015460ff1660078111156109cc576109cc6122ee565b11156109ea5760405162461bcd60e51b81526004016105499061293e565b6109fa8989898989898989611221565b9998505050505050505050565b82610a10610fd7565b60008281526065602052604090206004015461010090046001600160a01b03908116911614610a515760405162461bcd60e51b81526004016105499061270d565b61099c848484611905565b6000610a6f8888888888600089896109a2565b98975050505050505050565b600080846007811115610a9057610a906122ee565b1415610a9e57506000610bc8565b600080836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ada57600080fd5b505afa158015610aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b129190612980565b90506001866007811115610b2857610b286122ee565b1415610ba257846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6757600080fd5b505afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190612980565b91505b610bc388610bb083856129b9565b610bbb90600a612ac2565b896001611961565b925050505b95945050505050565b60008181526067602052604090206060906104f9906119c0565b600060696000610bf9610fd7565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020805460ff19169115159190911790557f6a1d208088a5247661492b1a58218f5a744f7a63a6271b5dd8fa9ed6a6b4485e81610886610fd7565b80610c64610fd7565b60008281526065602052604090206004015461010090046001600160a01b03908116911614610ca55760405162461bcd60e51b81526004016105499061270d565b60008281526065602090815260408083208381556001810180546001600160f01b031916905560028101849055600381018490556004810180546001600160a81b03191690556005810184905560060180546001600160a01b031916905560679091528120908181610d178282612159565b50506040518492507fd278ecade1e148fd8320435541f72d6a02dff654c1577ae2cadecba16e8ef2149150600090a25050565b6066805460009182610d5b83612ad1565b919050559050610d69610fd7565b6001600160a01b0316610d8461012086016101008701612220565b6001600160a01b031614610dda5760405162461bcd60e51b815260206004820152601f60248201527f756e617574686f72697a656420636f6d6d69746d656e742063726561746f72006044820152606401610549565b60008181526065602052604090208490610df4828261279b565b50506000818152606560205260409020610e0d90610fe6565b610e18818484611194565b807f16b531d6c0bbff6da27b922e61fc528bb3ae5b435f9e56fb87e399afb6ae520a610e4c61012087016101008801612220565b610120870135610e6461016089016101408a01612220565b604080516001600160a01b03948516815260208101939093529216818301528735606082015290519081900360800190a29392505050565b6000610eb18a8a8a8a8a60008b8b8b8b610ebf565b9a9950505050505050505050565b6000600660008c81526065602052604090206004015460ff166007811115610ee957610ee96122ee565b1480610f1a5750600760008c81526065602052604090206004015460ff166007811115610f1857610f186122ee565b145b610f365760405162461bcd60e51b81526004016105499061293e565b60008b81526065602090815260408083206002015481519283018c9052929101604051602081830303815290604052805190602001209050610f7a858584846119d4565b610fb65760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b6044820152606401610549565b610fc68d8d8d8d8d8d8d8d611221565b9d9c50505050505050505050505050565b6000610fe16119ec565b905090565b600181015463ffffffff4281169116116110375760405162461bcd60e51b8152602060048201526012602482015271195e1c1a5c99590818dbdb5b5a5d1b595b9d60721b6044820152606401610549565b805461108f5760405162461bcd60e51b815260206004820152602160248201527f636f6d6d69746d656e74207072696e636970616c20616c6c6f636174696f6e206044820152600360fc1b6064820152608401610549565b6000600482015460ff1660078111156110aa576110aa6122ee565b146111915760008160030154116111035760405162461bcd60e51b815260206004820152601d60248201527f636f6d6d69746d656e7420636f6c6c61746572616c20726174696f20300000006044820152606401610549565b6001600482015460ff16600781111561111e5761111e6122ee565b1415611191576002810154156111915760405162461bcd60e51b815260206004820152603260248201527f636f6d6d69746d656e7420636f6c6c61746572616c20746f6b656e206964206d6044820152710757374206265203020666f722045524332360741b6064820152608401610549565b50565b60005b818110156111f0576111dd8383838181106111b4576111b4612aec565b90506020020160208101906111c99190612220565b600086815260676020526040902090611a1c565b50806111e881612ad1565b915050611197565b5060405183907f04224de4972d2a55e811df57692f065a266ea975d06938d50b3cb33b498b161790600090a2505050565b600088815260656020526040812061123881610fe6565b60018101546001600160a01b03878116600160501b909204161461129e5760405162461bcd60e51b815260206004820152601c60248201527f4d69736d61746368696e6720636f6c6c61746572616c20746f6b656e000000006044820152606401610549565b600181015461ffff600160401b909104811690851610156112f95760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420696e746572657374207261746560581b6044820152606401610549565b600181015463ffffffff6401000000009091048116908416111561135f5760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206c6f616e206d6178206475726174696f6e000000000000006044820152606401610549565b805460008381526068602052604090205411156113be5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c6964206c6f616e206d6178207072696e636970616c0000000000006044820152606401610549565b60008a81526067602052604090206113d590611a31565b15806113fb57506113fb6113e7610fd7565b60008c815260676020526040902090611a3b565b6114475760405162461bcd60e51b815260206004820181905260248201527f756e617574686f72697a656420636f6d6d69746d656e7420626f72726f7765726044820152606401610549565b80548911156114765780546040516375d44cf160e11b81526004810191909152602481018a9052604401610549565b60038101546004820154600183015460068401546000936114b4938e93919260ff909116916001600160a01b03600160501b90910481169116610a7b565b9050808910156114e15760405163b744c71960e01b815260048101829052602481018a9052604401610549565b6002600483015460ff1660078111156114fc576114fc6122ee565b148061151f575060048083015460ff16600781111561151d5761151d6122ee565b145b8061154257506006600483015460ff166007811115611540576115406122ee565b145b156115af57886001146115af5760405162461bcd60e51b815260206004820152602f60248201527f696e76616c696420636f6d6d69746d656e7420636f6c6c61746572616c20616d60448201526e6f756e7420666f722045524337323160881b6064820152608401610549565b6002600483015460ff1660078111156115ca576115ca6122ee565b14806115ee57506003600483015460ff1660078111156115ec576115ec6122ee565b145b1561165457878260020154146116545760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420636f6d6d69746d656e7420636f6c6c61746572616c20746f6044820152641ad95b925960da1b6064820152608401610549565b60008b815260686020526040812080548c9290611672908490612b02565b9091555050815460008c81526068602052604090205411156116e25760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178207072696e636970616c206f6620636f6d6d69746d604482015262195b9d60ea1b6064820152608401610549565b6117466040518061010001604052806000815260200160006001600160a01b0316815260200160008152602001600063ffffffff168152602001600061ffff1681526020016060815260200160006001600160a01b03168152602001606081525090565b6005830154815260068301546001600160a01b039081166020830152604082018c905263ffffffff8616606083015261ffff87166080830152871660c08201526000600484015460ff1660078111156117a1576117a16122ee565b1461186f5760408051600180825281830190925290816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816117bb57505060e08201526040805160808101909152600484015481906118119060ff16611a5d565b6002811115611822576118226122ee565b8152602081018c9052604081018b90526001850154600160501b90046001600160a01b031660609091015260e0820151805160009061186357611863612aec565b60200260200101819052505b6118808161187b610fd7565b611b7d565b93506118a3848460040160019054906101000a90046001600160a01b0316611c09565b508b7f7839c0e772fbc0df2f1be83221fb8cd10f50be73dac060cbb277ee5c856219306118ce610fd7565b604080516001600160a01b039092168252602082018f9052810187905260600160405180910390a250505098975050505050505050565b60005b818110156111f05761194e83838381811061192557611925612aec565b905060200201602081019061193a9190612220565b600086815260676020526040902090611c6b565b508061195981612ad1565b915050611908565b60008061196f868686611c80565b90506001836002811115611985576119856122ee565b1480156119a257506000848061199d5761199d612b1a565b868809115b156119b5576119b2600182612b02565b90505b90505b949350505050565b606060006119cd83611d2f565b9392505050565b6000826119e2868685611d8b565b1495945050505050565b60008060143610611a15575060131936013560601c611a0b81336104cf565b15611a1557919050565b3391505090565b60006119cd836001600160a01b038416611dd7565b60006104f9825490565b6001600160a01b038116600090815260018301602052604081205415156119cd565b60006001826007811115611a7357611a736122ee565b1415611a8157506000919050565b6002826007811115611a9557611a956122ee565b1480611ab257506004826007811115611ab057611ab06122ee565b145b80611ace57506006826007811115611acc57611acc6122ee565b145b15611adb57506001919050565b6003826007811115611aef57611aef6122ee565b1480611b0c57506005826007811115611b0a57611b0a6122ee565b145b80611b2857506007826007811115611b2657611b266122ee565b145b15611b3557506002919050565b60405162461bcd60e51b815260206004820152601760248201527f556e6b6e6f776e20436f6c6c61746572616c20547970650000000000000000006044820152606401610549565b60006060611bf3846020015185600001518660400151876060015188608001518960a001518a60c001518b60e00151604051602401611bc3989796959493929190612b88565b60408051601f198184030181529190526020810180516001600160e01b0316637bbd53d760e01b17905284611e26565b9050808060200190518101906119b89190612c52565b6000611c6163a8cb5d6860e01b84604051602401611c2991815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915283611e26565b5060019392505050565b60006119cd836001600160a01b038416611e7e565b600080806000198587098587029250828110838203039150508060001415611cbb57838281611cb157611cb1612b1a565b04925050506119cd565b808411611cc757600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b606081600001805480602002602001604051908101604052809291908181526020018280548015611d7f57602002820191906000526020600020905b815481526020019060010190808311611d6b575b50505050509050919050565b600081815b84811015611dce57611dba82878784818110611dae57611dae612aec565b90506020020135611f71565b915080611dc681612ad1565b915050611d90565b50949350505050565b6000818152600183016020526040812054611e1e575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104f9565b5060006104f9565b60606119cd8383604051602001611e3e929190612c6b565b60408051601f198184030181529190526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690611fa0565b60008181526001830160205260408120548015611f67576000611ea2600183612ca2565b8554909150600090611eb690600190612ca2565b9050818114611f1b576000866000018281548110611ed657611ed6612aec565b9060005260206000200154905080876000018481548110611ef957611ef9612aec565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611f2c57611f2c612cb9565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506104f9565b60009150506104f9565b6000818310611f8d5760008281526020849052604090206119cd565b60008381526020839052604090206119cd565b60606119cd838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156120405760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610549565b600080866001600160a01b0316858760405161205c9190612ccf565b60006040518083038185875af1925050503d8060008114612099576040519150601f19603f3d011682016040523d82523d6000602084013e61209e565b606091505b50915091506120af878383876120ba565b979650505050505050565b6060831561212657825161211f576001600160a01b0385163b61211f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610549565b50816119b8565b6119b8838381511561213b5781518083602001fd5b8060405162461bcd60e51b81526004016105499190612ceb565b5050565b508054600082559060005260206000209081019061119191905b808211156121875760008155600101612173565b5090565b6001600160a01b038116811461119157600080fd5b600080604083850312156121b357600080fd5b82356121be8161218b565b915060208301356121ce8161218b565b809150509250929050565b600061016082840312156121ec57600080fd5b50919050565b600080610180838503121561220657600080fd5b8235915061221784602085016121d9565b90509250929050565b60006020828403121561223257600080fd5b81356119cd8161218b565b60006020828403121561224f57600080fd5b5035919050565b60008083601f84011261226857600080fd5b50813567ffffffffffffffff81111561228057600080fd5b6020830191508360208260051b850101111561229b57600080fd5b9250929050565b6000806000604084860312156122b757600080fd5b83359250602084013567ffffffffffffffff8111156122d557600080fd5b6122e186828701612256565b9497909650939450505050565b634e487b7160e01b600052602160045260246000fd5b8b815263ffffffff8b811660208301528a16604082015261ffff891660608201526001600160a01b038816608082015260a0810187905260c08101869052610160810160088610612357576123576122ee565b8560e08301526123736101008301866001600160a01b03169052565b836101208301526123906101408301846001600160a01b03169052565b9c9b505050505050505050505050565b61ffff8116811461119157600080fd5b63ffffffff8116811461119157600080fd5b600080600080600080600080610100898b0312156123df57600080fd5b8835975060208901359650604089013595506060890135945060808901356124068161218b565b935060a08901356124168161218b565b925060c0890135612426816123a0565b915060e0890135612436816123b0565b809150509295985092959890939650565b600080600080600080600060e0888a03121561246257600080fd5b8735965060208801359550604088013594506060880135935060808801356124898161218b565b925060a0880135612499816123a0565b915060c08801356124a9816123b0565b8091505092959891949750929550565b6008811061119157600080fd5b600080600080600060a086880312156124de57600080fd5b853594506020860135935060408601356124f7816124b9565b925060608601356125078161218b565b915060808601356125178161218b565b809150509295509295909350565b6020808252825182820181905260009190848201906040850190845b818110156125665783516001600160a01b031683529284019291840191600101612541565b50909695505050505050565b6000806000610180848603121561258857600080fd5b61259285856121d9565b925061016084013567ffffffffffffffff8111156122d557600080fd5b60008060008060008060008060006101008a8c0312156125ce57600080fd5b8935985060208a0135975060408a0135965060608a0135955060808a01356125f58161218b565b945060a08a0135612605816123a0565b935060c08a0135612615816123b0565b925060e08a013567ffffffffffffffff81111561263157600080fd5b61263d8c828d01612256565b915080935050809150509295985092959850929598565b6000806000806000806000806000806101208b8d03121561267457600080fd5b8a35995060208b0135985060408b0135975060608b0135965060808b013561269b8161218b565b955060a08b01356126ab8161218b565b945060c08b01356126bb816123a0565b935060e08b01356126cb816123b0565b92506101008b013567ffffffffffffffff8111156126e857600080fd5b6126f48d828e01612256565b915080935050809150509295989b9194979a5092959850565b6020808252601e908201527f756e617574686f72697a656420636f6d6d69746d656e74206c656e6465720000604082015260600190565b600081356104f9816123b0565b600081356104f9816123a0565b600081356104f98161218b565b600081356104f9816124b9565b60088210612788576127886122ee565b60ff1981541660ff831681178255505050565b81358155600181016127c96127b260208501612744565b825463ffffffff191663ffffffff91909116178255565b6127fa6127d860408501612744565b825467ffffffff00000000191660209190911b67ffffffff0000000016178255565b61282f61280960608501612751565b825469ffff0000000000000000191660409190911b69ffff000000000000000016178255565b61287d61283e6080850161275e565b8280547fffff0000000000000000000000000000000000000000ffffffffffffffffffff1660509290921b600160501b600160f01b0316919091179055565b5060a0820135600282015560c08201356003820155600481016128ab6128a560e0850161276b565b82612778565b6128e16128bb610100850161275e565b828054610100600160a81b03191660089290921b610100600160a81b0316919091179055565b5061012082013560058201556121556128fd610140840161275e565b6006830180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561293357600080fd5b81516119cd8161218b565b60208082526022908201527f496e76616c696420636f6d6d69746d656e7420636f6c6c61746572616c207479604082015261706560f01b606082015260800190565b60006020828403121561299257600080fd5b815160ff811681146119cd57600080fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168060ff038211156129d6576129d66129a3565b019392505050565b600181815b80851115612a195781600019048211156129ff576129ff6129a3565b80851615612a0c57918102915b93841c93908002906129e3565b509250929050565b600082612a30575060016104f9565b81612a3d575060006104f9565b8160018114612a535760028114612a5d57612a79565b60019150506104f9565b60ff841115612a6e57612a6e6129a3565b50506001821b6104f9565b5060208310610133831016604e8410600b8410161715612a9c575081810a6104f9565b612aa683836129de565b8060001904821115612aba57612aba6129a3565b029392505050565b60006119cd60ff841683612a21565b6000600019821415612ae557612ae56129a3565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60008219821115612b1557612b156129a3565b500190565b634e487b7160e01b600052601260045260246000fd5b60005b83811015612b4b578181015183820152602001612b33565b8381111561099c5750506000910152565b60008151808452612b74816020860160208601612b30565b601f01601f19169290920160200192915050565b600061010060018060a01b03808c16845260208b8186015260408b81870152606063ffffffff8c1681880152608061ffff8c16818901528560a0890152612bd18689018c612b5c565b8a861660c08a015288810360e08a01528951808252858b0197509085019060005b81811015612c39578851805160038110612c0e57612c0e6122ee565b8452808801518885015286810151878501528501518816858401529786019791830191600101612bf2565b5050809750505050505050509998505050505050505050565b600060208284031215612c6457600080fd5b5051919050565b60008351612c7d818460208801612b30565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b600082821015612cb457612cb46129a3565b500390565b634e487b7160e01b600052603160045260246000fd5b60008251612ce1818460208701612b30565b9190910192915050565b6020815260006119cd6020830184612b5c56fea26469706673582212203b9b1c6df529bd774f08ed1a0eaaad92bd5cae47f9bfbec9728590c028dbca7464736f6c634300080900330000000000000000000000005cfd3aed08a444be32839bd911ebecd6888611640000000000000000000000002bd9697bf0ab44be5ca698fb5787d8f13ca48ffc