10 txs
11 calls
constructor
constructor()
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
getDomainSeparator
viewfunction getDomainSeparator() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getSignatureHash
viewfunction getSignatureHash(address user, address paymentToken, uint256 spentAmount, uint256 spentDollars, uint256 boughtAmount, string uuid, uint256 deadline) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isTokenWhitelisted
viewfunction isTokenWhitelisted(address token) view returns (bool)
paused
viewfunction paused() view returns (bool)
PLEDGE_TYPEHASH
viewfunction PLEDGE_TYPEHASH() view returns (bytes32)
SIGNER_ROLE
viewfunction SIGNER_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
TOKEN_MANAGER_ROLE
viewfunction TOKEN_MANAGER_ROLE() view returns (bytes32)
userNonces
viewfunction userNonces(address) view returns (uint256)
whitelistedTokens
viewfunction whitelistedTokens(address) view returns (bool)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pause
nonpayablefunction pause()
pledgeWithSignature
payablefunction pledgeWithSignature(address paymentToken, uint256 spentAmount, uint256 spentDollars, uint256 boughtAmount, string uuid, uint256 deadline, bytes signature) payable
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setTokenWhitelist
nonpayablefunction setTokenWhitelist(address token, bool whitelisted)
setTokenWhitelistBatch
nonpayablefunction setTokenWhitelistBatch(address[] tokens, bool whitelisted)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw(address token, uint256 amount)
events
EIP712DomainChanged
event EIP712DomainChanged()
Paused
event Paused(address account)
PledgeExecuted
event PledgeExecuted(address indexed user, uint256 indexed chainId, address indexed paymentToken, uint256 spentAmount, uint256 spentDollars, uint256 boughtAmount, string uuid, uint256 nonce)
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)
TokenWhitelisted
event TokenWhitelisted(address indexed token, bool indexed whitelisted)
Unpaused
event Unpaused(address account)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InvalidNativeTokenAmount
error InvalidNativeTokenAmount()
InvalidShortString
error InvalidShortString()
InvalidSignature
error InvalidSignature()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SignatureExpired
error SignatureExpired()
StringTooLong
error StringTooLong(string str)
TokenNotWhitelisted
error TokenNotWhitelisted()
UnexpectedNativeToken
error UnexpectedNativeToken()
creation bytecode
0x61016060405234801561001157600080fd5b506040518060400160405280600f81526020017f506c656467655369676e617475726500000000000000000000000000000000008152506040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506100926001836101fb60201b90919060201c565b61012081815250506100ae6002826101fb60201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a081815250506100eb61024b60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505061013b6000801b336102a660201b60201c565b5061016c7fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f70336102a660201b60201c565b5061019d7f74f7a545c65c11839a48d7453738b30c295408df2d944516167556759ddc6d06336102a660201b60201c565b506001600560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506109a3565b600060208351101561021d57610216836103a360201b60201c565b9050610245565b8261022d8361040b60201b60201c565b600001908161023c91906106d7565b5060ff60001b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e05161010051463060405160200161028b959493929190610812565b60405160208183030381529060405280519060200120905090565b60006102b8838361041560201b60201c565b61039857600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061033561047f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061039d565b600090505b92915050565b600080829050601f815111156103f057826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016103e791906108ea565b60405180910390fd5b8051816103fc9061093c565b60001c1760001b915050919050565b6000819050919050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061050857607f821691505b60208210810361051b5761051a6104c1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026105837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610546565b61058d8683610546565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006105d46105cf6105ca846105a5565b6105af565b6105a5565b9050919050565b6000819050919050565b6105ee836105b9565b6106026105fa826105db565b848454610553565b825550505050565b600090565b61061761060a565b6106228184846105e5565b505050565b5b818110156106465761063b60008261060f565b600181019050610628565b5050565b601f82111561068b5761065c81610521565b61066584610536565b81016020851015610674578190505b61068861068085610536565b830182610627565b50505b505050565b600082821c905092915050565b60006106ae60001984600802610690565b1980831691505092915050565b60006106c7838361069d565b9150826002028217905092915050565b6106e082610487565b67ffffffffffffffff8111156106f9576106f8610492565b5b61070382546104f0565b61070e82828561064a565b600060209050601f831160018114610741576000841561072f578287015190505b61073985826106bb565b8655506107a1565b601f19841661074f86610521565b60005b8281101561077757848901518255600182019150602085019450602081019050610752565b868310156107945784890151610790601f89168261069d565b8355505b6001600288020188555050505b505050505050565b6000819050919050565b6107bc816107a9565b82525050565b6107cb816105a5565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107fc826107d1565b9050919050565b61080c816107f1565b82525050565b600060a08201905061082760008301886107b3565b61083460208301876107b3565b61084160408301866107b3565b61084e60608301856107c2565b61085b6080830184610803565b9695505050505050565b600082825260208201905092915050565b60005b83811015610894578082015181840152602081019050610879565b60008484015250505050565b6000601f19601f8301169050919050565b60006108bc82610487565b6108c68185610865565b93506108d6818560208601610876565b6108df816108a0565b840191505092915050565b6000602082019050818103600083015261090481846108b1565b905092915050565b600081519050919050565b6000819050602082019050919050565b600061093382516107a9565b80915050919050565b60006109478261090c565b8261095184610917565b905061095c81610927565b9250602082101561099c576109977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802610546565b831692505b5050919050565b60805160a05160c05160e05161010051610120516101405161295b6109fd60003960006115440152600061150901526000611942015260006119210152600061157a015260006115d0015260006115f9015261295b6000f3fe6080604052600436106101805760003560e01c80638456cb59116100d6578063c2840e601161007f578063daf9c21011610059578063daf9c21014610512578063ed24911d1461054f578063f3fef3a31461057a57610180565b8063c2840e6014610495578063c9bcc97e146104c0578063d547741f146104e957610180565b8063a1ebf35d116100b0578063a1ebf35d14610402578063a217fddf1461042d578063b5af090f1461045857610180565b80638456cb591461037d57806384b0196e1461039457806391d14854146103c557610180565b806336568abe116101385780635a0638a0116101125780635a0638a0146102fe5780635c975abb146103295780637e28c7db1461035457610180565b806336568abe146102815780633f4ba83a146102aa578063554eb8dd146102c157610180565b80632639d22e116101695780632639d22e146101ff5780632f2ff15d1461021b5780632f7801f41461024457610180565b806301ffc9a714610185578063248a9ca3146101c2575b600080fd5b34801561019157600080fd5b506101ac60048036038101906101a79190611d6c565b6105a3565b6040516101b99190611db4565b60405180910390f35b3480156101ce57600080fd5b506101e960048036038101906101e49190611e05565b61061d565b6040516101f69190611e41565b60405180910390f35b61021960048036038101906102149190611fab565b61063c565b005b34801561022757600080fd5b50610242600480360381019061023d919061208d565b61094a565b005b34801561025057600080fd5b5061026b600480360381019061026691906120cd565b61096c565b6040516102789190612109565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a3919061208d565b610984565b005b3480156102b657600080fd5b506102bf6109ff565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190612124565b610a17565b6040516102f59190611e41565b60405180910390f35b34801561030a57600080fd5b50610313610ad2565b6040516103209190611e41565b60405180910390f35b34801561033557600080fd5b5061033e610af6565b60405161034b9190611db4565b60405180910390f35b34801561036057600080fd5b5061037b60048036038101906103769190612268565b610b0d565b005b34801561038957600080fd5b50610392610c44565b005b3480156103a057600080fd5b506103a9610c5c565b6040516103bc9796959493929190612460565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e7919061208d565b610d06565b6040516103f99190611db4565b60405180910390f35b34801561040e57600080fd5b50610417610d70565b6040516104249190611e41565b60405180910390f35b34801561043957600080fd5b50610442610d94565b60405161044f9190611e41565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a91906120cd565b610d9b565b60405161048c9190611db4565b60405180910390f35b3480156104a157600080fd5b506104aa610df1565b6040516104b79190611e41565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e291906124e4565b610e15565b005b3480156104f557600080fd5b50610510600480360381019061050b919061208d565b610ee1565b005b34801561051e57600080fd5b50610539600480360381019061053491906120cd565b610f03565b6040516105469190611db4565b60405180910390f35b34801561055b57600080fd5b50610564610f23565b6040516105719190611e41565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190612524565b610f32565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610616575061061582610ff0565b5b9050919050565b6000806000838152602001908152602001600020600101549050919050565b61064461105a565b8242111561067e576040517f0819bdcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610701576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610758338b8b8b8b8b8b8b898c8c61109b565b61078e576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906107de90612593565b9190505550600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff160361085557883414610850576040517f27eb4d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ce565b6000341115610890576040517fd453e7b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008911156108cd5760008a90506108cb33308c8473ffffffffffffffffffffffffffffffffffffffff1661119f909392919063ffffffff16565b505b5b8973ffffffffffffffffffffffffffffffffffffffff16463373ffffffffffffffffffffffffffffffffffffffff167fe9a24b18880bc0703dc71a52a1868a7db4cd0c9a6171301ca59c4598bc592f5b8c8c8c8c8c8960405161093696959493929190612617565b60405180910390a450505050505050505050565b6109538261061d565b61095c81611221565b6109668383611235565b50505050565b60046020528060005260406000206000915090505481565b61098c611326565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109f0576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109fa828261132e565b505050565b6000801b610a0c81611221565b610a14611420565b50565b600080600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060007fe1c790b96d1f2aca85d4b45992f57bd4d21b972a51212ed9fcccad9e53841d198b8b8b8b8b8b8b8b8a604051602001610aa19a99989796959493929190612673565b604051602081830303815290604052805190602001209050610ac281611483565b9250505098975050505050505050565b7fe1c790b96d1f2aca85d4b45992f57bd4d21b972a51212ed9fcccad9e53841d1981565b6000600360009054906101000a900460ff16905090565b7f74f7a545c65c11839a48d7453738b30c295408df2d944516167556759ddc6d06610b3781611221565b60005b84849050811015610c3d578260056000878785818110610b5d57610b5c612709565b5b9050602002016020810190610b7291906120cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550821515858583818110610bd957610bd8612709565b5b9050602002016020810190610bee91906120cd565b73ffffffffffffffffffffffffffffffffffffffff167fef81a9943b96c8df4ef243401c9bf5159146166211356898b52d382086168d9260405160405180910390a38080600101915050610b3a565b5050505050565b6000801b610c5181611221565b610c5961149d565b50565b600060608060008060006060610c70611500565b610c7861153b565b46306000801b600067ffffffffffffffff811115610c9957610c98612738565b5b604051908082528060200260200182016040528015610cc75781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f7081565b6000801b81565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b7f74f7a545c65c11839a48d7453738b30c295408df2d944516167556759ddc6d0681565b7f74f7a545c65c11839a48d7453738b30c295408df2d944516167556759ddc6d06610e3f81611221565b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158373ffffffffffffffffffffffffffffffffffffffff167fef81a9943b96c8df4ef243401c9bf5159146166211356898b52d382086168d9260405160405180910390a3505050565b610eea8261061d565b610ef381611221565b610efd838361132e565b50505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000610f2d611576565b905090565b6000801b610f3f81611221565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fbf573373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610fb9573d6000803e3d6000fd5b50610feb565b610fea33838573ffffffffffffffffffffffffffffffffffffffff1661162d9092919063ffffffff16565b5b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611062610af6565b15611099576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000807fe1c790b96d1f2aca85d4b45992f57bd4d21b972a51212ed9fcccad9e53841d198d8d8d8d8d8d8d8d8d6040516020016110e19a99989796959493929190612673565b604051602081830303815290604052805190602001209050600061110482611483565b9050600061115f86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050836116ac90919063ffffffff16565b905061118b7fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f7082610d06565b93505050509b9a5050505050505050505050565b61121b848573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016111d493929190612767565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506116d8565b50505050565b6112328161122d611326565b61177a565b50565b60006112418383610d06565b61131b57600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506112b8611326565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611320565b600090505b92915050565b600033905090565b600061133a8383610d06565b1561141557600080600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113b2611326565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001905061141a565b600090505b92915050565b6114286117cb565b6000600360006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61146c611326565b604051611479919061279e565b60405180910390a1565b6000611496611490611576565b8361180b565b9050919050565b6114a561105a565b6001600360006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586114e9611326565b6040516114f6919061279e565b60405180910390a1565b606061153660017f000000000000000000000000000000000000000000000000000000000000000061184c90919063ffffffff16565b905090565b606061157160027f000000000000000000000000000000000000000000000000000000000000000061184c90919063ffffffff16565b905090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480156115f257507f000000000000000000000000000000000000000000000000000000000000000046145b1561161f577f0000000000000000000000000000000000000000000000000000000000000000905061162a565b6116276118fc565b90505b90565b6116a7838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016116609291906127b9565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506116d8565b505050565b6000806000806116bc8686611992565b9250925092506116cc82826119ee565b82935050505092915050565b600080602060008451602086016000885af1806116fb576040513d6000823e3d81fd5b3d925060005191505060008214611716576001811415611732565b60008473ffffffffffffffffffffffffffffffffffffffff163b145b1561177457836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161176b919061279e565b60405180910390fd5b50505050565b6117848282610d06565b6117c75780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016117be9291906127e2565b60405180910390fd5b5050565b6117d3610af6565b611809576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b606060ff60001b83146118695761186283611b52565b90506118f6565b8180546118759061283a565b80601f01602080910402602001604051908101604052809291908181526020018280546118a19061283a565b80156118ee5780601f106118c3576101008083540402835291602001916118ee565b820191906000526020600020905b8154815290600101906020018083116118d157829003601f168201915b505050505090505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000463060405160200161197795949392919061286b565b60405160208183030381529060405280519060200120905090565b600080600060418451036119d75760008060006020870151925060408701519150606087015160001a90506119c988828585611bc6565b9550955095505050506119e7565b60006002855160001b9250925092505b9250925092565b60006003811115611a0257611a016128be565b5b826003811115611a1557611a146128be565b5b0315611b4e5760016003811115611a2f57611a2e6128be565b5b826003811115611a4257611a416128be565b5b03611a79576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115611a8d57611a8c6128be565b5b826003811115611aa057611a9f6128be565b5b03611ae5578060001c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401611adc9190612109565b60405180910390fd5b600380811115611af857611af76128be565b5b826003811115611b0b57611b0a6128be565b5b03611b4d57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401611b449190611e41565b60405180910390fd5b5b5050565b60606000611b5f83611cba565b90506000602067ffffffffffffffff811115611b7e57611b7d612738565b5b6040519080825280601f01601f191660200182016040528015611bb05781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c1115611c06576000600385925092509250611cb0565b600060018888888860405160008152602001604052604051611c2b9493929190612909565b6020604051602081039080840390855afa158015611c4d573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ca157600060016000801b93509350935050611cb0565b8060008060001b935093509350505b9450945094915050565b60008060ff8360001c169050601f811115611d01576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611d4981611d14565b8114611d5457600080fd5b50565b600081359050611d6681611d40565b92915050565b600060208284031215611d8257611d81611d0a565b5b6000611d9084828501611d57565b91505092915050565b60008115159050919050565b611dae81611d99565b82525050565b6000602082019050611dc96000830184611da5565b92915050565b6000819050919050565b611de281611dcf565b8114611ded57600080fd5b50565b600081359050611dff81611dd9565b92915050565b600060208284031215611e1b57611e1a611d0a565b5b6000611e2984828501611df0565b91505092915050565b611e3b81611dcf565b82525050565b6000602082019050611e566000830184611e32565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e8782611e5c565b9050919050565b611e9781611e7c565b8114611ea257600080fd5b50565b600081359050611eb481611e8e565b92915050565b6000819050919050565b611ecd81611eba565b8114611ed857600080fd5b50565b600081359050611eea81611ec4565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f1557611f14611ef0565b5b8235905067ffffffffffffffff811115611f3257611f31611ef5565b5b602083019150836001820283011115611f4e57611f4d611efa565b5b9250929050565b60008083601f840112611f6b57611f6a611ef0565b5b8235905067ffffffffffffffff811115611f8857611f87611ef5565b5b602083019150836001820283011115611fa457611fa3611efa565b5b9250929050565b600080600080600080600080600060e08a8c031215611fcd57611fcc611d0a565b5b6000611fdb8c828d01611ea5565b9950506020611fec8c828d01611edb565b9850506040611ffd8c828d01611edb565b975050606061200e8c828d01611edb565b96505060808a013567ffffffffffffffff81111561202f5761202e611d0f565b5b61203b8c828d01611eff565b955095505060a061204e8c828d01611edb565b93505060c08a013567ffffffffffffffff81111561206f5761206e611d0f565b5b61207b8c828d01611f55565b92509250509295985092959850929598565b600080604083850312156120a4576120a3611d0a565b5b60006120b285828601611df0565b92505060206120c385828601611ea5565b9150509250929050565b6000602082840312156120e3576120e2611d0a565b5b60006120f184828501611ea5565b91505092915050565b61210381611eba565b82525050565b600060208201905061211e60008301846120fa565b92915050565b60008060008060008060008060e0898b03121561214457612143611d0a565b5b60006121528b828c01611ea5565b98505060206121638b828c01611ea5565b97505060406121748b828c01611edb565b96505060606121858b828c01611edb565b95505060806121968b828c01611edb565b94505060a089013567ffffffffffffffff8111156121b7576121b6611d0f565b5b6121c38b828c01611eff565b935093505060c06121d68b828c01611edb565b9150509295985092959890939650565b60008083601f8401126121fc576121fb611ef0565b5b8235905067ffffffffffffffff81111561221957612218611ef5565b5b60208301915083602082028301111561223557612234611efa565b5b9250929050565b61224581611d99565b811461225057600080fd5b50565b6000813590506122628161223c565b92915050565b60008060006040848603121561228157612280611d0a565b5b600084013567ffffffffffffffff81111561229f5761229e611d0f565b5b6122ab868287016121e6565b935093505060206122be86828701612253565b9150509250925092565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6122fd816122c8565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561233d578082015181840152602081019050612322565b60008484015250505050565b6000601f19601f8301169050919050565b600061236582612303565b61236f818561230e565b935061237f81856020860161231f565b61238881612349565b840191505092915050565b61239c81611e7c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6123d781611eba565b82525050565b60006123e983836123ce565b60208301905092915050565b6000602082019050919050565b600061240d826123a2565b61241781856123ad565b9350612422836123be565b8060005b8381101561245357815161243a88826123dd565b9750612445836123f5565b925050600181019050612426565b5085935050505092915050565b600060e082019050612475600083018a6122f4565b8181036020830152612487818961235a565b9050818103604083015261249b818861235a565b90506124aa60608301876120fa565b6124b76080830186612393565b6124c460a0830185611e32565b81810360c08301526124d68184612402565b905098975050505050505050565b600080604083850312156124fb576124fa611d0a565b5b600061250985828601611ea5565b925050602061251a85828601612253565b9150509250929050565b6000806040838503121561253b5761253a611d0a565b5b600061254985828601611ea5565b925050602061255a85828601611edb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061259e82611eba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036125d0576125cf612564565b5b600182019050919050565b82818337600083830152505050565b60006125f6838561230e565b93506126038385846125db565b61260c83612349565b840190509392505050565b600060a08201905061262c60008301896120fa565b61263960208301886120fa565b61264660408301876120fa565b81810360608301526126598185876125ea565b905061266860808301846120fa565b979650505050505050565b600061012082019050612689600083018d611e32565b612696602083018c612393565b6126a3604083018b612393565b6126b0606083018a6120fa565b6126bd60808301896120fa565b6126ca60a08301886120fa565b81810360c08301526126dd8186886125ea565b90506126ec60e08301856120fa565b6126fa6101008301846120fa565b9b9a5050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060608201905061277c6000830186612393565b6127896020830185612393565b61279660408301846120fa565b949350505050565b60006020820190506127b36000830184612393565b92915050565b60006040820190506127ce6000830185612393565b6127db60208301846120fa565b9392505050565b60006040820190506127f76000830185612393565b6128046020830184611e32565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061285257607f821691505b6020821081036128655761286461280b565b5b50919050565b600060a0820190506128806000830188611e32565b61288d6020830187611e32565b61289a6040830186611e32565b6128a760608301856120fa565b6128b46080830184612393565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060ff82169050919050565b612903816128ed565b82525050565b600060808201905061291e6000830187611e32565b61292b60208301866128fa565b6129386040830185611e32565b6129456060830184611e32565b9594505050505056fea164736f6c634300081e000a