0 txs
3k calls
constructor
No constructor.
functions
borrowerAttestationSchemaId
viewfunction borrowerAttestationSchemaId() view returns (bytes32)
CURRENT_CODE_VERSION
viewfunction CURRENT_CODE_VERSION() view returns (uint256)
getAllVerifiedBorrowersForMarket
viewfunction getAllVerifiedBorrowersForMarket(uint256 _marketId, uint256 _page, uint256 _perPage) view returns (address[])
getAllVerifiedLendersForMarket
viewfunction getAllVerifiedLendersForMarket(uint256 _marketId, uint256 _page, uint256 _perPage) view returns (address[])
getBidExpirationTime
viewfunction getBidExpirationTime(uint256 marketId) view returns (uint32)
getMarketAttestationRequirements
viewfunction getMarketAttestationRequirements(uint256 _marketId) view returns (bool lenderAttestationRequired, bool borrowerAttestationRequired)
getMarketData
viewfunction getMarketData(uint256 _marketId) view returns (address owner, uint32 paymentCycleDuration, uint32 paymentDefaultDuration, uint32 loanExpirationTime, string metadataURI, uint16 marketplaceFeePercent, bool lenderAttestationRequired)
getMarketFeeRecipient
viewfunction getMarketFeeRecipient(uint256 _marketId) view returns (address)
getMarketOwner
viewfunction getMarketOwner(uint256 _marketId) view returns (address)
getMarketplaceFee
viewfunction getMarketplaceFee(uint256 _marketId) view returns (uint16 fee)
getMarketURI
viewfunction getMarketURI(uint256 _marketId) view returns (string)
getPaymentCycle
viewfunction getPaymentCycle(uint256 _marketId) view returns (uint32, uint8)
getPaymentDefaultDuration
viewfunction getPaymentDefaultDuration(uint256 _marketId) view returns (uint32)
getPaymentType
viewfunction getPaymentType(uint256 _marketId) view returns (uint8)
isMarketClosed
viewfunction isMarketClosed(uint256 _marketId) view returns (bool)
isMarketOpen
viewfunction isMarketOpen(uint256 _marketId) view returns (bool)
isPayable
purefunction isPayable() pure returns (bool)
isVerifiedBorrower
viewfunction isVerifiedBorrower(uint256 _marketId, address _borrowerAddress) view returns (bool isVerified_, bytes32 uuid_)
isVerifiedLender
viewfunction isVerifiedLender(uint256 _marketId, address _lenderAddress) view returns (bool isVerified_, bytes32 uuid_)
lenderAttestationSchemaId
viewfunction lenderAttestationSchemaId() view returns (bytes32)
marketCount
viewfunction marketCount() view returns (uint256)
tellerAS
viewfunction tellerAS() view returns (address)
version
viewfunction version() view returns (uint256)
attestBorrower
nonpayablefunction attestBorrower(uint256 _marketId, address _borrowerAddress, uint256 _expirationTime, uint8 _v, bytes32 _r, bytes32 _s)
attestBorrower
nonpayablefunction attestBorrower(uint256 _marketId, address _borrowerAddress, uint256 _expirationTime)
attestLender
nonpayablefunction attestLender(uint256 _marketId, address _lenderAddress, uint256 _expirationTime, uint8 _v, bytes32 _r, bytes32 _s)
attestLender
nonpayablefunction attestLender(uint256 _marketId, address _lenderAddress, uint256 _expirationTime)
borrowerExitMarket
nonpayablefunction borrowerExitMarket(uint256 _marketId)
closeMarket
nonpayablefunction closeMarket(uint256 _marketId)
createMarket
nonpayablefunction createMarket(address _initialOwner, uint32 _paymentCycleDuration, uint32 _paymentDefaultDuration, uint32 _bidExpirationTime, uint16 _feePercent, bool _requireLenderAttestation, bool _requireBorrowerAttestation, string _uri) returns (uint256 marketId_)
createMarket
nonpayablefunction createMarket(address _initialOwner, uint32 _paymentCycleDuration, uint32 _paymentDefaultDuration, uint32 _bidExpirationTime, uint16 _feePercent, bool _requireLenderAttestation, bool _requireBorrowerAttestation, uint8 _paymentType, uint8 _paymentCycleType, string _uri) returns (uint256 marketId_)
initialize
nonpayablefunction initialize(address _tellerAS)
lenderExitMarket
nonpayablefunction lenderExitMarket(uint256 _marketId)
resolve
payablefunction resolve(address recipient, bytes schema, bytes data, uint256, address attestor) payable returns (bool)
revokeBorrower
nonpayablefunction revokeBorrower(uint256 _marketId, address _borrowerAddress, uint8 _v, bytes32 _r, bytes32 _s)
revokeBorrower
nonpayablefunction revokeBorrower(uint256 _marketId, address _borrowerAddress)
revokeLender
nonpayablefunction revokeLender(uint256 _marketId, address _lenderAddress, uint8 _v, bytes32 _r, bytes32 _s)
revokeLender
nonpayablefunction revokeLender(uint256 _marketId, address _lenderAddress)
setBidExpirationTime
nonpayablefunction setBidExpirationTime(uint256 _marketId, uint32 _duration)
setBorrowerAttestationRequired
nonpayablefunction setBorrowerAttestationRequired(uint256 _marketId, bool _required)
setLenderAttestationRequired
nonpayablefunction setLenderAttestationRequired(uint256 _marketId, bool _required)
setMarketFeePercent
nonpayablefunction setMarketFeePercent(uint256 _marketId, uint16 _newPercent)
setMarketFeeRecipient
nonpayablefunction setMarketFeeRecipient(uint256 _marketId, address _recipient)
setMarketPaymentType
nonpayablefunction setMarketPaymentType(uint256 _marketId, uint8 _newPaymentType)
setMarketURI
nonpayablefunction setMarketURI(uint256 _marketId, string _uri)
setPaymentCycle
nonpayablefunction setPaymentCycle(uint256 _marketId, uint8 _paymentCycleType, uint32 _duration)
setPaymentDefaultDuration
nonpayablefunction setPaymentDefaultDuration(uint256 _marketId, uint32 _duration)
transferMarketOwnership
nonpayablefunction transferMarketOwnership(uint256 _marketId, address _newOwner)
updateMarketSettings
nonpayablefunction updateMarketSettings(uint256 _marketId, uint32 _paymentCycleDuration, uint8 _newPaymentType, uint8 _paymentCycleType, uint32 _paymentDefaultDuration, uint32 _bidExpirationTime, uint16 _feePercent, bool _borrowerAttestationRequired, bool _lenderAttestationRequired, string _metadataURI)
events
BorrowerAttestation
event BorrowerAttestation(uint256 marketId, address borrower)
BorrowerExitMarket
event BorrowerExitMarket(uint256 marketId, address borrower)
BorrowerRevocation
event BorrowerRevocation(uint256 marketId, address borrower)
Initialized
event Initialized(uint8 version)
LenderAttestation
event LenderAttestation(uint256 marketId, address lender)
LenderExitMarket
event LenderExitMarket(uint256 marketId, address lender)
LenderRevocation
event LenderRevocation(uint256 marketId, address lender)
MarketClosed
event MarketClosed(uint256 marketId)
MarketCreated
event MarketCreated(address indexed owner, uint256 marketId)
SetBidExpirationTime
event SetBidExpirationTime(uint256 marketId, uint32 duration)
SetMarketBorrowerAttestation
event SetMarketBorrowerAttestation(uint256 marketId, bool required)
SetMarketFee
event SetMarketFee(uint256 marketId, uint16 feePct)
SetMarketFeeRecipient
event SetMarketFeeRecipient(uint256 marketId, address newRecipient)
SetMarketLenderAttestation
event SetMarketLenderAttestation(uint256 marketId, bool required)
SetMarketOwner
event SetMarketOwner(uint256 marketId, address newOwner)
SetMarketPaymentType
event SetMarketPaymentType(uint256 marketId, uint8 paymentType)
SetMarketURI
event SetMarketURI(uint256 marketId, string uri)
SetPaymentCycle
event SetPaymentCycle(uint256 marketId, uint8 paymentCycleType, uint32 value)
SetPaymentCycleDuration
event SetPaymentCycleDuration(uint256 marketId, uint32 duration)
SetPaymentDefaultDuration
event SetPaymentDefaultDuration(uint256 marketId, uint32 duration)
errors
NotPayable
error NotPayable()
creation bytecode
0x608060405234801561001057600080fd5b506132bd806100206000396000f3fe6080604052600436106102b25760003560e01c80637f027a1a11610175578063bc4c3495116100dc578063ce46e04611610095578063e4050e291161006f578063e4050e29146109e2578063e690e84e14610a02578063ec97908214610a22578063f9fa934514610a3857600080fd5b8063ce46e04614610967578063d6e794dd1461097b578063ddfafef6146109c257600080fd5b8063bc4c349514610894578063bd536e6e146108b4578063be99279b146108d4578063bfacba3d146108f4578063c4d66de814610927578063c995cddc1461094757600080fd5b806397eb575b1161012e57806397eb575b1461079b5780639f33da3f146107bb578063a5630f19146107db578063aa542fa514610834578063ae41809514610854578063b6b6d77f1461087457600080fd5b80637f027a1a146106a25780638b636632146106c25780638b975cda146106e25780638eff9ea414610702578063947a75b41461076857806394e8e97e1461077b57600080fd5b80633ef19a9b11610219578063583b16ae116101d2578063583b16ae146105ec5780636054b1751461060c578063644137961461062c578063679700d91461064c5780637694d2ec146106625780637cfc18181461068257600080fd5b80633ef19a9b146105415780633fa7f688146105615780634148f94c14610581578063455154e514610596578063532f5694146105b657806354fd4d50146105d657600080fd5b80631db2b0d91161026b5780631db2b0d9146104585780631ebc7da8146104855780632f1be8f9146104a5578063344e553d146104c55780633c0db788146104f35780633d3690291461050957600080fd5b8063066e7513146102d7578063082fc54d146103135780630a2e98e41461036557806311bed5bb146103ad5780631a4808d2146103eb5780631cc672df1461041857600080fd5b366102d257604051631574f9f360e01b815260040160405180910390fd5b005b600080fd5b3480156102e357600080fd5b506102f76102f23660046127a3565b610a58565b6040805192151583526020830191909152015b60405180910390f35b34801561031f57600080fd5b5061035061032e3660046127d3565b600090815260026020526040902060060154600160401b900463ffffffff1690565b60405163ffffffff909116815260200161030a565b34801561037157600080fd5b5061039a6103803660046127d3565b6000908152600260208190526040909120015461ffff1690565b60405161ffff909116815260200161030a565b3480156103b957600080fd5b506103506103c83660046127d3565b600090815260026020526040902060060154640100000000900463ffffffff1690565b3480156103f757600080fd5b5061040b6104063660046127d3565b610a98565b60405161030a9190612839565b34801561042457600080fd5b506104486104333660046127d3565b60009081526008602052604090205460ff1690565b604051901515815260200161030a565b34801561046457600080fd5b5061047861047336600461284c565b610b3d565b60405161030a9190612878565b34801561049157600080fd5b506102d06104a03660046127a3565b610b67565b3480156104b157600080fd5b506102d06104c03660046128de565b610c0c565b3480156104d157600080fd5b506104e56104e0366004612979565b610cd5565b60405190815260200161030a565b3480156104ff57600080fd5b506104e560015481565b34801561051557600080fd5b506105296105243660046127d3565b610cfa565b6040516001600160a01b03909116815260200161030a565b34801561054d57600080fd5b506102f761055c3660046127a3565b610d0b565b34801561056d57600080fd5b506102d061057c366004612a73565b610d3f565b34801561058d57600080fd5b506104e5600881565b3480156105a257600080fd5b506102d06105b13660046127a3565b610d57565b3480156105c257600080fd5b506102d06105d1366004612acd565b610d67565b3480156105e257600080fd5b506104e560075481565b3480156105f857600080fd5b506102d0610607366004612a73565b610e5d565b34801561061857600080fd5b506102d0610627366004612b19565b610e6d565b34801561063857600080fd5b506105296106473660046127d3565b610e83565b34801561065857600080fd5b506104e560065481565b34801561066e57600080fd5b5061047861067d36600461284c565b610eac565b34801561068e57600080fd5b506102d061069d3660046127a3565b610ecb565b3480156106ae57600080fd5b506102d06106bd3660046127d3565b610f5b565b3480156106ce57600080fd5b506102d06106dd3660046127a3565b610fc7565b3480156106ee57600080fd5b506102d06106fd366004612b69565b610fd3565b34801561070e57600080fd5b5061075161071d3660046127d3565b6000908152600260208190526040909120908101546006909101546201000090910460ff90811692600160601b9092041690565b60408051921515835290151560208301520161030a565b610448610776366004612c06565b611025565b34801561078757600080fd5b506102d0610796366004612ca6565b6110d3565b3480156107a757600080fd5b506102d06107b6366004612ccb565b611189565b3480156107c757600080fd5b506104486107d63660046127d3565b611196565b3480156107e757600080fd5b506108266107f63660046127d3565b60009081526002602052604090206006810154600a9091015463ffffffff90911691600160a81b90910460ff1690565b60405161030a929190612d37565b34801561084057600080fd5b506102d061084f366004612d5a565b6111ce565b34801561086057600080fd5b506102d061086f3660046127d3565b6112ad565b34801561088057600080fd5b506102d061088f366004612d7f565b61133f565b3480156108a057600080fd5b506102d06108af366004612b19565b611430565b3480156108c057600080fd5b506102d06108cf3660046128de565b61143f565b3480156108e057600080fd5b506102d06108ef366004612ca6565b611505565b34801561090057600080fd5b5061091461090f3660046127d3565b6115bd565b60405161030a9796959493929190612da2565b34801561093357600080fd5b506102d0610942366004612e01565b6116cf565b34801561095357600080fd5b506102d06109623660046127d3565b611a68565b34801561097357600080fd5b506000610448565b34801561098757600080fd5b506109b56109963660046127d3565b6000908152600260205260409020600a0154600160a01b900460ff1690565b60405161030a9190612e1e565b3480156109ce57600080fd5b50600954610529906001600160a01b031681565b3480156109ee57600080fd5b506102d06109fd366004612ccb565b611ab3565b348015610a0e57600080fd5b506102d0610a1d366004612e31565b611ac0565b348015610a2e57600080fd5b506104e560045481565b348015610a4457600080fd5b506104e5610a53366004612e6f565b611cb9565b600082815260026020526040812060068101548291610a8c918591600160601b90910460ff16906009810190600701611cdd565b915091505b9250929050565b6000818152600260205260409020600101805460609190610ab890612f30565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae490612f30565b8015610b315780601f10610b0657610100808354040283529160200191610b31565b820191906000526020600020905b815481529060010190602001808311610b1457829003601f168201915b50505050509050919050565b6000838152600260205260409020606090600301610b5c818585611db7565b9150505b9392505050565b8133610b7282611e9e565b6001600160a01b031614610ba15760405162461bcd60e51b8152600401610b9890612f6b565b60405180910390fd5b600083815260026020908152604091829020600a0180546001600160a01b0319166001600160a01b0386169081179091558251868152918201527ffc7e26c4fffcd77fc52c81b32a6a6b7838b5592ced8c14c1a46e2b4a322c568a91015b60405180910390a1505050565b8133610c1782611e9e565b6001600160a01b031614610c3d5760405162461bcd60e51b8152600401610b9890612f6b565b60008381526002602052604090206006015463ffffffff8381166401000000009092041614610cd057600083815260026020908152604091829020600601805467ffffffff00000000191664010000000063ffffffff8716908102919091179091558251868152918201527f3e49e2efeacab7e8344acd4e7940449bf62039aa3734c34fa6d3525654be81019101610bff565b505050565b6000610cea8c8c8c8c8c8c8c8c8c8c8c611eb9565b9c9b505050505050505050505050565b6000610d0582611e9e565b92915050565b60008281526002602081905260408220908101548291610a8c9185916201000090910460ff16906005810190600301611cdd565b610d4f8686866001878787611fab565b505050505050565b610d63828260006120cf565b5050565b8233610d7282611e9e565b6001600160a01b031614610d985760405162461bcd60e51b8152600401610b9890612f6b565b6000848152600260209081526040918290209151610dba926001019101612f92565b604051602081830303815290604052805190602001208383604051602001610de392919061302e565b6040516020818303038152906040528051906020012014610e57576000848152600260205260409020610e1a9060010184846126f2565b507f6218b53065a32d32b3f52d9ad728c1b826a2aae15fc1ee92f83836debbcc1029848484604051610e4e9392919061303e565b60405180910390a15b50505050565b610d4f8686866000878787611fab565b610e7c8585600186868661213c565b5050505050565b6000818152600260205260408120600a01546001600160a01b031680610d0557610b6083611e9e565b6000838152600260205260409020606090600701610b5c818585611db7565b8133610ed682611e9e565b6001600160a01b031614610efc5760405162461bcd60e51b8152600401610b9890612f6b565b60008381526002602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251868152918201527ff68f2d4b68e0d54a81a3b8e53403ddec34a1e288cf6a6f6b3621c0a47b6e36f99101610bff565b6000818152600260205260408120610f769060030133612153565b90508015610d63577f55e867ccc9ac324e2c193ce4ed25397fb890213c704685f2c9fbe5bd7507298682335b604080519283526001600160a01b039091166020830152015b60405180910390a15050565b610d63828260016120cf565b8a33610fde82611e9e565b6001600160a01b0316146110045760405162461bcd60e51b8152600401610b9890612f6b565b6110178c8c8c8c8c8c8c8c8c8c8c612168565b505050505050505050505050565b60008087873060405160200161103d93929190613074565b60408051601f1981840301815291905280516020909101209050600080611066878901896127a3565b915091508260055414801561108c5750806001600160a01b03168b6001600160a01b0316145b80156110b1575061109c82611e9e565b6001600160a01b0316856001600160a01b0316145b806110c457506001600160a01b03851630145b9b9a5050505050505050505050565b81336110de82611e9e565b6001600160a01b0316146111045760405162461bcd60e51b8152600401610b9890612f6b565b6000838152600260208190526040909120015462010000900460ff16151582151514610cd057600083815260026020818152604092839020909101805462ff0000191662010000861515908102919091179091558251868152918201527f4666a8529dea37114f2ecc11706d613f7a59a7967f8467da6877820b83d405a19101610bff565b610cd083838360016121c7565b6000818152600260205260408120546001600160a01b031615801590610d0557505060009081526008602052604090205460ff161590565b81336111d982611e9e565b6001600160a01b0316146111ff5760405162461bcd60e51b8152600401610b9890612f6b565b6000838152600260205260409020600a0154600160a01b900460ff16600181111561122c5761122c612d03565b82600181111561123e5761123e612d03565b14610cd0576000838152600260205260409020600a01805483919060ff60a01b1916600160a01b83600181111561127757611277612d03565b02179055507ff81d9cc918f72edfc74e6b61d4e19ef9a739e94a0e9715b108e6af62275142ef8383604051610bff92919061309a565b80336112b882611e9e565b6001600160a01b0316146112de5760405162461bcd60e51b8152600401610b9890612f6b565b60008281526008602052604090205460ff16610d635760008281526008602052604090819020805460ff19166001179055517f9dc30b8eda31a6a144e092e5de600955523a6a925cc15cc1d1b9b4872cfa615590610fbb9084815260200190565b813361134a82611e9e565b6001600160a01b0316146113705760405162461bcd60e51b8152600401610b9890612f6b565b6127108261ffff1611156113b85760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c195c98d95b9d608a1b6044820152606401610b98565b6000838152600260208190526040909120015461ffff838116911614610cd057600083815260026020818152604092839020909101805461ffff191661ffff86169081179091558251868152918201527f9c6f3e426c05d512408d4ecf517e5155756288155088ad45a81c0e111e3d18549101610bff565b610e7c8585600086868661213c565b813361144a82611e9e565b6001600160a01b0316146114705760405162461bcd60e51b8152600401610b9890612f6b565b60008381526002602052604090206006015463ffffffff838116600160401b9092041614610cd05760008381526002602090815260409182902060060180546bffffffff00000000000000001916600160401b63ffffffff8716908102919091179091558251868152918201527ff0275a50e761f3b1635fa59ce199b1f2268b3fcb7fbdfb18c21aa3d2d78aa7b79101610bff565b813361151082611e9e565b6001600160a01b0316146115365760405162461bcd60e51b8152600401610b9890612f6b565b600083815260026020526040902060060154600160601b900460ff16151582151514610cd057600083815260026020908152604091829020600601805460ff60601b1916600160601b861515908102919091179091558251868152918201527fc906280af595fe94779bb9a972f24fe4e0ed7f76bebb4ee0eb9a5f30d6dd4c879101610bff565b60008181526002602081905260408220805460068201549282015460019092018054859485948594606094869485946001600160a01b039093169363ffffffff808516946401000000008104821694600160401b90910490911692909161ffff8116916201000090910460ff1690839061163690612f30565b80601f016020809104026020016040519081016040528092919081815260200182805461166290612f30565b80156116af5780601f10611684576101008083540402835291602001916116af565b820191906000526020600020905b81548152906001019060200180831161169257829003601f168201915b505050505092509650965096509650965096509650919395979092949650565b600054610100900460ff16158080156116ef5750600054600160ff909116105b806117095750303b158015611709575060005460ff166001145b61176c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b98565b6000805460ff19166001179055801561178f576000805461ff0019166101001790555b600980546001600160a01b0319166001600160a01b038416908117909155604080516381fa6cd360e01b815290516381fa6cd391600480820192602092909190829003018186803b1580156117e357600080fd5b505afa1580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b91906130aa565b6040805163a99e7e2960e01b81526004810191909152602960448201527f2875696e74323536206d61726b657449642c2061646472657373206c656e646560648201526872416464726573732960b81b60848201523060248201526001600160a01b03919091169063a99e7e299060a401602060405180830381600087803b1580156118a657600080fd5b505af11580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de91906130c7565b600155600954604080516381fa6cd360e01b815290516001600160a01b03909216916381fa6cd391600480820192602092909190829003018186803b15801561192657600080fd5b505afa15801561193a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195e91906130aa565b6040805163a99e7e2960e01b81526004810191909152602b60448201527f2875696e74323536206d61726b657449642c206164647265737320626f72726f60648201526a776572416464726573732960a81b60848201523060248201526001600160a01b03919091169063a99e7e299060a401602060405180830381600087803b1580156119eb57600080fd5b505af11580156119ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2391906130c7565b6006558015610d63576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610fbb565b6000818152600260205260408120611a839060070133612153565b90508015610d63577f914ccbaf2f5c9c2f4b7c6be3497b6b2ceb6ce2d050aec6eb2e0e31b8f9f67f0c8233610fa2565b610cd083838360006121c7565b8233611acb82611e9e565b6001600160a01b031614611af15760405162461bcd60e51b8152600401610b9890612f6b565b6000836001811115611b0557611b05612d03565b1480611b3157506001836001811115611b2057611b20612d03565b148015611b31575063ffffffff8216155b611b925760405162461bcd60e51b815260206004820152602c60248201527f6d6f6e74686c79207061796d656e74206379636c65206475726174696f6e206360448201526b185b9b9bdd081899481cd95d60a21b6064820152608401610b98565b60008481526002602052604081209080856001811115611bb457611bb4612d03565b14611bc25762278d00611bc4565b835b600a830154909150600160a81b900460ff166001811115611be757611be7612d03565b856001811115611bf957611bf9612d03565b141580611c135750600682015463ffffffff828116911614155b15610d4f576000868152600260205260409020600a01805486919060ff60a81b1916600160a81b836001811115611c4c57611c4c612d03565b021790555060008681526002602052604090819020600601805463ffffffff191663ffffffff8416179055517fbb20033c58b125e31641bfd5e2f4bd906d684e27472fab0648527cc39cb2918c90611ca9908890889085906130e0565b60405180910390a1505050505050565b6000611ccf8a8a8a8a8a8a8a6000808c8c611eb9565b9a9950505050505050505050565b6000808415611da957611cf0838761231e565b8015611d8657506009546001600160a01b03878116600090815260208790526040908190205490516330cd251f60e21b8152600481019190915291169063c334947c9060240160206040518083038186803b158015611d4e57600080fd5b505afa158015611d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d86919061310a565b6001600160a01b0387166000908152602086905260409020549092509050611dae565b600191505b94509492505050565b60606000611dc485612340565b90506000611dd2848661313d565b9050818111611e95576000611de7858361315c565b905082811115611df45750815b611dfe8282613174565b67ffffffffffffffff811115611e1657611e1661318b565b604051908082528060200260200182016040528015611e3f578160200160208202803683370190505b509350815b81811015611e9257611e56888261234a565b858281518110611e6857611e686131a1565b6001600160a01b039092166020928302919091019091015280611e8a816131b7565b915050611e44565b50505b50509392505050565b6000908152600260205260409020546001600160a01b031690565b60006001600160a01b038c16611f095760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964206f776e6572206164647265737360581b6044820152606401610b98565b600460008154611f18906131b7565b9182905550600081815260026020526040902080546001600160a01b0319166001600160a01b038f161790559050611f59818c87878e8e8e8d8f8c8c612168565b8b6001600160a01b03167fa69fa77c6a90b171cf4e3d9a9dd6c4e56fbd1fbbdcf3925eaf600ccaa917feab82604051611f9491815260200190565b60405180910390a29b9a5050505050505050505050565b83611fb857600654611fbc565b6001545b806005819055506000808989604051602001611feb9291909182526001600160a01b0316602082015260400190565b604051602081830303815290604052905060006120078b611e9e565b9050600960009054906101000a90046001600160a01b03166001600160a01b031663930ed0138b6005548c600087878e8e8e6040518a63ffffffff1660e01b815260040161205d999897969594939291906131d2565b602060405180830381600087803b15801561207757600080fd5b505af115801561208b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120af91906130c7565b925050506120bf89898389612356565b5050600060055550505050505050565b6120d883611e9e565b6001600160a01b0316336001600160a01b03161461212f5760405162461bcd60e51b81526020600482015260146024820152732737ba103a34329036b0b935b2ba1037bbb732b960611b6044820152606401610b98565b6000610e7c848484612458565b6000612149878787612458565b5050505050505050565b6000610b60836001600160a01b038416612568565b6121738b8383610d67565b61217d8b88610c0c565b6121878b8761143f565b6121918b8661133f565b61219b8b846110d3565b6121a58b85611505565b6121af8b8a6111ce565b6121ba8b898c611ac0565b5050505050505050505050565b806121d4576006546121d8565b6001545b60058190556121e685611e9e565b6001600160a01b0316336001600160a01b03161461223d5760405162461bcd60e51b81526020600482015260146024820152732737ba103a34329036b0b935b2ba1037bbb732b960611b6044820152606401610b98565b6009546005546040516000926001600160a01b0316916309a954cd9188919088908690612282908d9086906020019182526001600160a01b0316602082015260400190565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016122b1959493929190613233565b602060405180830381600087803b1580156122cb57600080fd5b505af11580156122df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230391906130c7565b905061231186868386612356565b5050600060055550505050565b6001600160a01b03811660009081526001830160205260408120541515610b60565b6000610d05825490565b6000610b60838361265b565b80156123de5760008481526002602081815260408084206001600160a01b038816855260058101835290842086905592879052526123979060030184612685565b50604080518581526001600160a01b03851660208201527f75675690de0899b0b869d83b44b2d926ac594426b2a0286c478ecdf815cbd33e910160405180910390a1610e57565b60008481526002602081815260408084206001600160a01b038816855260098101835290842086905592879052526124199060070184612685565b50604080518581526001600160a01b03851660208201527f0c2cfc7e7a16ebee66e77fb314f4bfdb5505e33e77d41c0c60604efc70fd926b9101610e4e565b600081156124e3575060008381526002602081815260408084206001600160a01b0387168552600581018352908420549387905291905261249c9060030184612153565b50604080518581526001600160a01b03851660208201527f6e7c30dc58d3daa1458c79b66ca464f5f3d8a23d9e50eb14daf1cb0923bf2900910160405180910390a1610b60565b5060008381526002602081815260408084206001600160a01b0387168552600981018352908420549387905291905261251f9060070184612153565b50604080518581526001600160a01b03851660208201527fe76a3e8b220b622b9fc2a655ab867687a93f195809eb3639f422e60936ff7eb4910160405180910390a19392505050565b6000818152600183016020526040812054801561265157600061258c600183613174565b85549091506000906125a090600190613174565b90508181146126055760008660000182815481106125c0576125c06131a1565b90600052602060002001549050808760000184815481106125e3576125e36131a1565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061261657612616613271565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610d05565b6000915050610d05565b6000826000018281548110612672576126726131a1565b9060005260206000200154905092915050565b6000610b60836001600160a01b03841660006126b4838360009081526001919091016020526040902054151590565b6126ea57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d05565b506000610d05565b8280546126fe90612f30565b90600052602060002090601f0160209004810192826127205760008555612766565b82601f106127395782800160ff19823516178555612766565b82800160010185558215612766579182015b8281111561276657823582559160200191906001019061274b565b50612772929150612776565b5090565b5b808211156127725760008155600101612777565b6001600160a01b03811681146127a057600080fd5b50565b600080604083850312156127b657600080fd5b8235915060208301356127c88161278b565b809150509250929050565b6000602082840312156127e557600080fd5b5035919050565b6000815180845260005b81811015612812576020818501810151868301820152016127f6565b81811115612824576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610b6060208301846127ec565b60008060006060848603121561286157600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156128b95783516001600160a01b031683529284019291840191600101612894565b50909695505050505050565b803563ffffffff811681146128d957600080fd5b919050565b600080604083850312156128f157600080fd5b82359150612901602084016128c5565b90509250929050565b803561ffff811681146128d957600080fd5b80151581146127a057600080fd5b600281106127a057600080fd5b60008083601f84011261294957600080fd5b50813567ffffffffffffffff81111561296157600080fd5b602083019150836020828501011115610a9157600080fd5b60008060008060008060008060008060006101408c8e03121561299b57600080fd5b8b356129a68161278b565b9a506129b460208d016128c5565b99506129c260408d016128c5565b98506129d060608d016128c5565b97506129de60808d0161290a565b965060a08c01356129ee8161291c565b955060c08c01356129fe8161291c565b945060e08c0135612a0e8161292a565b93506101008c0135612a1f8161292a565b92506101208c013567ffffffffffffffff811115612a3c57600080fd5b612a488e828f01612937565b915080935050809150509295989b509295989b9093969950565b803560ff811681146128d957600080fd5b60008060008060008060c08789031215612a8c57600080fd5b863595506020870135612a9e8161278b565b945060408701359350612ab360608801612a62565b92506080870135915060a087013590509295509295509295565b600080600060408486031215612ae257600080fd5b83359250602084013567ffffffffffffffff811115612b0057600080fd5b612b0c86828701612937565b9497909650939450505050565b600080600080600060a08688031215612b3157600080fd5b853594506020860135612b438161278b565b9350612b5160408701612a62565b94979396509394606081013594506080013592915050565b60008060008060008060008060008060006101408c8e031215612b8b57600080fd5b8b359a50612b9b60208d016128c5565b995060408c0135612bab8161292a565b985060608c0135612bbb8161292a565b9750612bc960808d016128c5565b9650612bd760a08d016128c5565b9550612be560c08d0161290a565b945060e08c0135612bf58161291c565b93506101008c0135612a1f8161291c565b600080600080600080600060a0888a031215612c2157600080fd5b8735612c2c8161278b565b9650602088013567ffffffffffffffff80821115612c4957600080fd5b612c558b838c01612937565b909850965060408a0135915080821115612c6e57600080fd5b50612c7b8a828b01612937565b909550935050606088013591506080880135612c968161278b565b8091505092959891949750929550565b60008060408385031215612cb957600080fd5b8235915060208301356127c88161291c565b600080600060608486031215612ce057600080fd5b833592506020840135612cf28161278b565b929592945050506040919091013590565b634e487b7160e01b600052602160045260246000fd5b600281106127a057634e487b7160e01b600052602160045260246000fd5b63ffffffff8316815260408101612d4d83612d19565b8260208301529392505050565b60008060408385031215612d6d57600080fd5b8235915060208301356127c88161292a565b60008060408385031215612d9257600080fd5b823591506129016020840161290a565b6001600160a01b038816815263ffffffff878116602083015286811660408301528516606082015260e060808201819052600090612de2908301866127ec565b61ffff9490941660a08301525090151560c09091015295945050505050565b600060208284031215612e1357600080fd5b8135610b608161278b565b60208101612e2b83612d19565b91905290565b600080600060608486031215612e4657600080fd5b833592506020840135612e588161292a565b9150612e66604085016128c5565b90509250925092565b60008060008060008060008060006101008a8c031215612e8e57600080fd5b8935612e998161278b565b9850612ea760208b016128c5565b9750612eb560408b016128c5565b9650612ec360608b016128c5565b9550612ed160808b0161290a565b945060a08a0135612ee18161291c565b935060c08a0135612ef18161291c565b925060e08a013567ffffffffffffffff811115612f0d57600080fd5b612f198c828d01612937565b915080935050809150509295985092959850929598565b600181811c90821680612f4457607f821691505b60208210811415612f6557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600d908201526c2737ba103a34329037bbb732b960991b604082015260600190565b600080835481600182811c915080831680612fae57607f831692505b6020808410821415612fce57634e487b7160e01b86526022600452602486fd5b818015612fe25760018114612ff357613020565b60ff19861689528489019650613020565b60008a81526020902060005b868110156130185781548b820152908501908301612fff565b505084890196505b509498975050505050505050565b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b82815260408101612d4d83612d19565b6000602082840312156130bc57600080fd5b8151610b608161278b565b6000602082840312156130d957600080fd5b5051919050565b838152606081016130f084612d19565b83602083015263ffffffff83166040830152949350505050565b60006020828403121561311c57600080fd5b8151610b608161291c565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561315757613157613127565b500290565b6000821982111561316f5761316f613127565b500190565b60008282101561318657613186613127565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006000198214156131cb576131cb613127565b5060010190565b600061012060018060a01b03808d1684528b60208501528a60408501528960608501528160808501526132078285018a6127ec565b971660a0840152505060ff9390931660c084015260e08301919091526101009091015295945050505050565b60018060a01b038616815284602082015283604082015282606082015260a06080820152600061326660a08301846127ec565b979650505050505050565b634e487b7160e01b600052603160045260246000fdfea264697066735822122096242772cfa046669ccfafd4f6f39c1b225bf391fec9c29f15886c6548b7eca264736f6c63430008090033