26 txs
101 calls
constructor
constructor(address _feeSigner, address _feeCollector, uint16 _twapInterval)
functions
DEFAULT
viewfunction DEFAULT() view returns (string)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
feeCollector
viewfunction feeCollector() view returns (address)
feeConfigs
viewfunction feeConfigs(string) view returns (uint256 lockedTokenPercentage, address feeTokenAddress, uint256 feeTokenAmount)
feeSigner
viewfunction feeSigner() view returns (address)
getFeeConfig
viewfunction getFeeConfig(string feeType) view returns (tuple)
getUserLocks
viewfunction getUserLocks(address user) view returns (address[])
owner
viewfunction owner() view returns (address)
revokedSignatures
viewfunction revokedSignatures(bytes32) view returns (bool)
twapInterval
viewfunction twapInterval() view returns (uint16)
userLocks
viewfunction userLocks(address, uint256) view returns (address)
createLock
payablefunction createLock(address token, address pool, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, string feeType) payable returns (address lockAddress)
createLock
payablefunction createLock(address token, address[] pools, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, string feeType) payable returns (address lockAddress)
createLockWithCustomFee
payablefunction createLockWithCustomFee(address token, address pool, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, tuple customFee, bytes signature) payable returns (address lockAddress)
createLockWithCustomFee
payablefunction createLockWithCustomFee(address token, address[] pools, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, tuple customFee, bytes signature) payable returns (address lockAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
revokeCustomFee
nonpayablefunction revokeCustomFee(tuple customFee)
setFeeCollector
nonpayablefunction setFeeCollector(address _feeCollector)
setFeeConfig
nonpayablefunction setFeeConfig(string feeType, uint256 lockedTokenPercentage, address feeTokenAddress, uint256 feeTokenAmount)
setFeeSigner
nonpayablefunction setFeeSigner(address _feeSigner)
setTwapInterval
nonpayablefunction setTwapInterval(uint16 _twapInterval)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
CustomFeeRevoked
event CustomFeeRevoked(address indexed user, uint256 lockedTokenPercentage, address feeTokenAddress, uint256 feeTokenAmount)
EIP712DomainChanged
event EIP712DomainChanged()
FeeCollected
event FeeCollected(address indexed user, address feeTokenAddress, uint256 feeTokenAmount)
LockCreated
event LockCreated(address indexed lockAddress, address indexed token, address[] pools, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, address owner)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
ETHTransferFailed
error ETHTransferFailed()
InsufficientFeePayment
error InsufficientFeePayment()
InvalidAddress
error InvalidAddress()
InvalidPoolPath
error InvalidPoolPath()
InvalidShortString
error InvalidShortString()
InvalidSignature
error InvalidSignature()
InvalidUnlockTime
error InvalidUnlockTime()
NotCustomFeeUser
error NotCustomFeeUser()
NotNeedETH
error NotNeedETH()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StringTooLong
error StringTooLong(string str)
creation bytecode
0x6101606040523480156200001257600080fd5b5060405162005b2938038062005b29833981016040819052620000359162000378565b604080518082018252600b81526a4c6f636b466163746f727960a81b602080830191909152825180840190935260018352603160f81b908301529033806200009857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000a3816200028f565b50620000b1826001620002df565b61012052620000c2816002620002df565b61014052815160208084019190912060e052815190820120610100524660a0526200015060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b038316620001815760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038216620001a95760405163e6c4247b60e01b815260040160405180910390fd5b60048054600380546001600160a01b0319166001600160a01b038681169190911790915585166001600160b01b031990911617600160a01b61ffff84160217905560408051606081018252600a8152600060208083019190915267016345785d8a000082840152825180840184526007815266191959985d5b1d60ca1b9181019190915291519091600591620002409190620003f2565b908152604080516020928190038301902083518155918301516001830180546001600160a01b0319166001600160a01b03909216919091179055919091015160029091015550620005db915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602083511015620002ff57620002f78362000318565b905062000312565b816200030c8482620004b5565b5060ff90505b92915050565b600080829050601f8151111562000346578260405163305a27a960e01b81526004016200008f919062000581565b80516200035382620005b6565b179392505050565b80516001600160a01b03811681146200037357600080fd5b919050565b6000806000606084860312156200038e57600080fd5b62000399846200035b565b9250620003a9602085016200035b565b9150604084015161ffff81168114620003c157600080fd5b809150509250925092565b60005b83811015620003e9578181015183820152602001620003cf565b50506000910152565b6000825162000406818460208701620003cc565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200043b57607f821691505b6020821081036200045c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004b057600081815260208120601f850160051c810160208610156200048b5750805b601f850160051c820191505b81811015620004ac5782815560010162000497565b5050505b505050565b81516001600160401b03811115620004d157620004d162000410565b620004e981620004e2845462000426565b8462000462565b602080601f831160018114620005215760008415620005085750858301515b600019600386901b1c1916600185901b178555620004ac565b600085815260208120601f198616915b82811015620005525788860151825594840194600190910190840162000531565b5085821015620005715787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620005a2816040850160208701620003cc565b601f01601f19169190910160400192915050565b805160208083015191908110156200045c5760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516154f3620006366000396000610f4101526000610f0d015260006113560152600061132e01526000611286015260006112b1015260006112dc01526154f36000f3fe6080604052600436106200014f5760003560e01c80637e1aa17811620000b9578063b74625bf1162000078578063b74625bf1462000488578063c415b95c146200049f578063c7edb6b014620004c1578063dd55d20214620004d8578063deafa92614620004ef578063f2fde38b146200051457600080fd5b80637e1aa17814620003cc57806384b0196e14620003f15780638da5cb5b146200041e578063a42dce80146200043e578063aa33fedb146200046357600080fd5b8063204a12801162000112578063204a128014620002bb57806323a35de914620002d257806331ac15cf14620003065780633c1d5df0146200032b5780635af7f2391462000363578063715018a614620003b457600080fd5b8063075693391462000154578063095bf90f14620001935780630a25dea9146200020b5780630e1edfdf146200024f5780631ec4036e1462000294575b600080fd5b3480156200016157600080fd5b5060045462000176906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620001a057600080fd5b50620001e7620001b2366004620017ac565b805160208183018101805160058252928201919093012091528054600182015460029092015490916001600160a01b03169083565b604080519384526001600160a01b039092166020840152908201526060016200018a565b3480156200021857600080fd5b506200024060405180604001604052806007815260200166191959985d5b1d60ca1b81525081565b6040516200018a919062001841565b3480156200025c57600080fd5b50620002836200026e3660046200185d565b60066020526000908152604090205460ff1681565b60405190151581526020016200018a565b348015620002a157600080fd5b50620002b9620002b33660046200190e565b62000539565b005b62000176620002cc3660046200192d565b620005e0565b348015620002df57600080fd5b50620002f7620002f1366004620019b8565b62000607565b6040516200018a919062001a1c565b3480156200031357600080fd5b50620002b96200032536600462001a31565b6200067f565b3480156200033857600080fd5b506004546200034f90600160a01b900461ffff1681565b60405161ffff90911681526020016200018a565b3480156200037057600080fd5b506200038862000382366004620017ac565b620006ab565b60408051825181526020808401516001600160a01b03169082015291810151908201526060016200018a565b348015620003c157600080fd5b50620002b96200072a565b348015620003d957600080fd5b50620002b9620003eb366004620019b8565b62000742565b348015620003fe57600080fd5b506200040962000796565b6040516200018a979695949392919062001a57565b3480156200042b57600080fd5b506000546001600160a01b031662000176565b3480156200044b57600080fd5b50620002b96200045d366004620019b8565b620007e0565b3480156200047057600080fd5b50620001766200048236600462001af3565b62000834565b620001766200049936600462001b20565b6200086d565b348015620004ac57600080fd5b5060035462000176906001600160a01b031681565b62000176620004d236600462001c49565b62000896565b62000176620004e936600462001cf3565b62000b1e565b348015620004fc57600080fd5b50620002b96200050e36600462001d88565b62000cc6565b3480156200052157600080fd5b50620002b962000533366004620019b8565b62000d51565b6200054362000d99565b6000620005508262000dc8565b600081815260066020908152604091829020805460ff1916600117905584519085015185830151606087015193519495506001600160a01b03909216937f64116023a6e4de0fdb9c83f1396d968b341777d268a235bb9c2f6a64558e026393620005d493919283526001600160a01b03919091166020830152604082015260600190565b60405180910390a25050565b6000620005fc87620005f28862000e5a565b8787878762000b1e565b979650505050505050565b6001600160a01b0381166000908152600760209081526040918290208054835181840281018401909452808452606093928301828280156200067357602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000654575b50505050509050919050565b6200068962000d99565b6004805461ffff909216600160a01b0261ffff60a01b19909216919091179055565b620006d960405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b600582604051620006eb919062001ded565b9081526040805191829003602090810183206060840183528054845260018101546001600160a01b031691840191909152600201549082015292915050565b6200073462000d99565b62000740600062000eb5565b565b6200074c62000d99565b6001600160a01b038116620007745760405163e6c4247b60e01b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600060608060008060006060620007ac62000f05565b620007b662000f39565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b620007ea62000d99565b6001600160a01b038116620008125760405163e6c4247b60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600760205281600052604060002081815481106200085157600080fd5b6000918252602090912001546001600160a01b03169150829050565b60006200088a886200087f8962000e5a565b888888888862000896565b98975050505050505050565b60006001600160a01b038816620008c05760405163e6c4247b60e01b815260040160405180910390fd5b8651600003620008e357604051633b88ff5b60e21b815260040160405180910390fd5b42851162000904576040516352aba6d360e11b815260040160405180910390fd5b82516001600160a01b031633146200092f57604051631b8c5be960e11b815260040160405180910390fd5b60006200093c8462000dc8565b60008181526006602052604090205490915060ff1615620009705760405163e6c4247b60e01b815260040160405180910390fd5b60006200097d8262000f68565b905060006200098d828662000f9e565b6004549091506001600160a01b03808316911614620009bf57604051638baa579f60e01b815260040160405180910390fd5b600060405180606001604052808860200151815260200188604001516001600160a01b0316815260200188606001518152509050620009fe8162000fcc565b60008c8c8c8c8c33308e6020015160405162000a1a90620016dd565b62000a2d98979695949392919062001e0b565b604051809103906000f08015801562000a4a573d6000803e3d6000fd5b50905060076000336001600160a01b03166001600160a01b03168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055508c6001600160a01b0316816001600160a01b03167fbb9c7f6cdae609e613b2334309ae045d208b06b3c10b432c02de12f900fca3e38e8e8e8e3360405162000b0695949392919062001e67565b60405180910390a39c9b505050505050505050505050565b60006001600160a01b03871662000b485760405163e6c4247b60e01b815260040160405180910390fd5b855160000362000b6b57604051633b88ff5b60e21b815260040160405180910390fd5b42841162000b8c576040516352aba6d360e11b815260040160405180910390fd5b600060058360405162000ba0919062001ded565b9081526040805191829003602090810183206060840183528054845260018101546001600160a01b0316918401919091526002015490820152905062000be68162000fcc565b600088888888883330886000015160405162000c0290620016dd565b62000c1598979695949392919062001e0b565b604051809103906000f08015801562000c32573d6000803e3d6000fd5b503360008181526007602090815260408083208054600181018255908452919092200180546001600160a01b0319166001600160a01b0385811691821790925591519394508c169290917fbb9c7f6cdae609e613b2334309ae045d208b06b3c10b432c02de12f900fca3e39162000cb2918d918d918d918d919062001e67565b60405180910390a398975050505050505050565b62000cd062000d99565b6040518060600160405280848152602001836001600160a01b031681526020018281525060058560405162000d06919062001ded565b908152604080516020928190038301902083518155918301516001830180546001600160a01b0319166001600160a01b03909216919091179055919091015160029091015550505050565b62000d5b62000d99565b6001600160a01b03811662000d8b57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b62000d968162000eb5565b50565b6000546001600160a01b03163314620007405760405163118cdaa760e01b815233600482015260240162000d82565b60007fc634b811962d68c8585e67f6f81126d6e16bfd358af4d38b4aefa726291718a4826000015183602001518460400151856060015160405160200162000e3d9594939291909485526001600160a01b03938416602086015260408501929092529091166060830152608082015260a00190565b604051602081830303815290604052805190602001209050919050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811062000e975762000e9762001eae565b6001600160a01b039092166020928302919091019091015292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606062000f347f00000000000000000000000000000000000000000000000000000000000000006001620011c1565b905090565b606062000f347f00000000000000000000000000000000000000000000000000000000000000006002620011c1565b600062000f9862000f7862001279565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b60008060008062000fb08686620013a7565b92509250925062000fc28282620013f8565b5090949350505050565b604081015115620011675760208101516001600160a01b03166200111d578060400151341015620010105760405163481fdfa360e11b815260040160405180910390fd5b60035460408281015190516000926001600160a01b031691908381818185875af1925050503d806000811462001063576040519150601f19603f3d011682016040523d82523d6000602084013e62001068565b606091505b50509050806200108b5760405163b12d13eb60e01b815260040160405180910390fd5b8160400151341115620011165760408201516000903390620010ae903462001ec4565b604051600081818185875af1925050503d8060008114620010ec576040519150601f19603f3d011682016040523d82523d6000602084013e620010f1565b606091505b5050905080620011145760405163b12d13eb60e01b815260040160405180910390fd5b505b5062001167565b34156200113d57604051635bdd050f60e11b815260040160405180910390fd5b6003546040820151602083015162001167926001600160a01b0391821692339290911690620014c7565b6020810151604080830151905133927ff228de527fc1b9843baac03b9a04565473a263375950e63435d4138464386f4692620011b6926001600160a01b03929092168252602082015260400190565b60405180910390a250565b606060ff8314620011df57620011d78362001529565b905062000f98565b818054620011ed9062001ee6565b80601f01602080910402602001604051908101604052809291908181526020018280546200121b9062001ee6565b80156200126c5780601f1062001240576101008083540402835291602001916200126c565b820191906000526020600020905b8154815290600101906020018083116200124e57829003601f168201915b5050505050905062000f98565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015620012d357507f000000000000000000000000000000000000000000000000000000000000000046145b15620012fe57507f000000000000000000000000000000000000000000000000000000000000000090565b62000f34604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008060008351604103620013e55760208401516040850151606086015160001a620013d6888285856200156a565b955095509550505050620013f1565b50508151600091506002905b9250925092565b60008260038111156200140f576200140f62001f22565b0362001419575050565b600182600381111562001430576200143062001f22565b036200144f5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111562001466576200146662001f22565b03620014895760405163fce698f760e01b81526004810182905260240162000d82565b6003826003811115620014a057620014a062001f22565b03620014c3576040516335e2f38360e21b81526004810182905260240162000d82565b5050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052620015239085906200163e565b50505050565b606060006200153883620016b4565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115620015a7575060009150600390508262001634565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015620015fc573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166200162a5750600092506001915082905062001634565b9250600091508190505b9450945094915050565b600080602060008451602086016000885af18062001662576040513d6000823e3d81fd5b50506000513d915081156200167c57806001141562001689565b6001600160a01b0384163b155b156200152357604051635274afe760e01b81526001600160a01b038516600482015260240162000d82565b600060ff8216601f81111562000f9857604051632cd44ac360e21b815260040160405180910390fd5b6135858062001f3983390190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200172d576200172d620016eb565b604052919050565b600082601f8301126200174757600080fd5b813567ffffffffffffffff811115620017645762001764620016eb565b62001779601f8201601f191660200162001701565b8181528460208386010111156200178f57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215620017bf57600080fd5b813567ffffffffffffffff811115620017d757600080fd5b620017e58482850162001735565b949350505050565b60005b838110156200180a578181015183820152602001620017f0565b50506000910152565b600081518084526200182d816020860160208601620017ed565b601f01601f19169290920160200192915050565b60208152600062001856602083018462001813565b9392505050565b6000602082840312156200187057600080fd5b5035919050565b80356001600160a01b03811681146200188f57600080fd5b919050565b600060808284031215620018a757600080fd5b6040516080810181811067ffffffffffffffff82111715620018cd57620018cd620016eb565b604052905080620018de8362001877565b815260208301356020820152620018f86040840162001877565b6040820152606083013560608201525092915050565b6000608082840312156200192157600080fd5b62001856838362001894565b60008060008060008060c087890312156200194757600080fd5b620019528762001877565b9550620019626020880162001877565b9450620019726040880162001877565b9350606087013592506080870135915060a087013567ffffffffffffffff8111156200199d57600080fd5b620019ab89828a0162001735565b9150509295509295509295565b600060208284031215620019cb57600080fd5b620018568262001877565b600081518084526020808501945080840160005b8381101562001a115781516001600160a01b031687529582019590820190600101620019ea565b509495945050505050565b602081526000620018566020830184620019d6565b60006020828403121562001a4457600080fd5b813561ffff811681146200185657600080fd5b60ff60f81b881681526000602060e08184015262001a7960e084018a62001813565b838103604085015262001a8d818a62001813565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101562001ae15783518352928401929184019160010162001ac3565b50909c9b505050505050505050505050565b6000806040838503121562001b0757600080fd5b62001b128362001877565b946020939093013593505050565b6000806000806000806000610140888a03121562001b3d57600080fd5b62001b488862001877565b965062001b586020890162001877565b955062001b686040890162001877565b9450606088013593506080880135925062001b878960a08a0162001894565b915061012088013567ffffffffffffffff81111562001ba557600080fd5b62001bb38a828b0162001735565b91505092959891949750929550565b600082601f83011262001bd457600080fd5b8135602067ffffffffffffffff82111562001bf35762001bf3620016eb565b8160051b62001c0482820162001701565b928352848101820192828101908785111562001c1f57600080fd5b83870192505b84831015620005fc5762001c398362001877565b8252918301919083019062001c25565b6000806000806000806000610140888a03121562001c6657600080fd5b62001c718862001877565b9650602088013567ffffffffffffffff8082111562001c8f57600080fd5b62001c9d8b838c0162001bc2565b975062001cad60408b0162001877565b965060608a0135955060808a0135945062001ccc8b60a08c0162001894565b93506101208a013591508082111562001ce457600080fd5b5062001bb38a828b0162001735565b60008060008060008060c0878903121562001d0d57600080fd5b62001d188762001877565b9550602087013567ffffffffffffffff8082111562001d3657600080fd5b62001d448a838b0162001bc2565b965062001d5460408a0162001877565b9550606089013594506080890135935060a089013591508082111562001d7957600080fd5b50620019ab89828a0162001735565b6000806000806080858703121562001d9f57600080fd5b843567ffffffffffffffff81111562001db757600080fd5b62001dc58782880162001735565b9450506020850135925062001ddd6040860162001877565b9396929550929360600135925050565b6000825162001e01818460208701620017ed565b9190910192915050565b6001600160a01b0389811682526101006020830181905260009162001e338483018c620019d6565b998116604085015260608401989098525050608081019490945291841660a084015290921660c082015260e0015292915050565b60a08152600062001e7c60a0830188620019d6565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b634e487b7160e01b600052603260045260246000fd5b8181038181111562000f9857634e487b7160e01b600052601160045260246000fd5b600181811c9082168062001efb57607f821691505b60208210810362001f1c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052602160045260246000fdfe6101406040523480156200001257600080fd5b5060405162003585380380620035858339810160408190526200003591620012e9565b826001600160a01b0381166200006657604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200007181620005b1565b506001805586516000036200009957604051633b88ff5b60e21b815260040160405180910390fd5b6001600160a01b03888116608052600380546001600160a01b03191688831617905560a086905260c08590528216610100526101208190528760005b885181101562000593576000898281518110620000f657620000f662001401565b6020908102919091018101516002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03841690811790915560408051630dfe168160e01b8152905193955091939092630dfe16819260048082019392918290030181865afa1580156200018e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b4919062001417565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021d919062001417565b9050816001600160a01b0316856001600160a01b03160362000242578094506200027e565b806001600160a01b0316856001600160a01b03160362000265578194506200027e565b604051633b88ff5b60e21b815260040160405180910390fd5b6040518060a00160405280846001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b03168152602001836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031b919062001437565b60ff168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000362573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000388919062001437565b60ff9081169091526001600160a01b038086166000908152600460209081526040808320865181549086166001600160a01b03199182161782559287015160018201805491871691909416179092558501516002909101805460608701516080909701518616600160a81b0260ff60a81b1997909616600160a01b026001600160a81b031990911692909416919091179290921793909316919091179055620004318462000601565b9050610100516001600160a01b0316633c1d5df06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049b91906200146f565b61ffff168161ffff1610156200057957836001600160a01b03166332148f67610100516001600160a01b0316633c1d5df06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200052291906200146f565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401600060405180830381600087803b1580156200055f57600080fd5b505af115801562000574573d6000803e3d6000fd5b505050505b5050505080806200058a90620014a3565b915050620000d5565b506200059e620006b3565b60e05250620019f6975050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051600481526024810182526020810180516001600160e01b0316633850c7bd60e01b179052905160009182916001600160a01b038516916200064691620014bf565b600060405180830381855afa9150503d806000811462000683576040519150601f19603f3d011682016040523d82523d6000602084013e62000688565b606091505b50915050600081806020019051810190620006a49190620014f0565b50909998505050505050505050565b608051600090670de0b6b3a764000090825b600254811015620007e157600060028281548110620006e857620006e862001401565b60009182526020822001546001600160a01b031691506200070a8285620007e9565b905060006200071a838362000890565b9050670de0b6b3a7640000620007318288620015a3565b6200073d9190620015d3565b6001600160a01b03808516600090815260046020908152604091829020825160a081018452815485168152600182015485169281018390526002909101548085169382019390935260ff600160a01b840481166060830152600160a81b90930490921660808301529298509190871603620007bf5780604001519550620007c7565b806020015195505b505050508080620007d890620014a3565b915050620006c5565b509092915050565b6001600160a01b038083166000908152600460209081526040808320815160a081018352815486168152600182015486169381018490526002909101548086169282019290925260ff600160a01b830481166060830152600160a81b9092049091166080820152919284169003620008665760019150506200088a565b826001600160a01b031681604001516001600160a01b031603620002655760009150505b92915050565b6001600160a01b038083166000908152600460208181526040808420815160a08101835281548716815260018201548716818501526002909101548087168284015260ff600160a01b820481166060840152600160a81b9091041660808201526101005182516303c1d5df60e41b815292519596919587959190921693633c1d5df093808301939192908290030181865afa15801562000934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200095a91906200146f565b60408051600280825260608201835292935060009290916020830190803683370190505090508161ffff16816000815181106200099b576200099b62001401565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110620009cd57620009cd62001401565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0388169063883bdbfd9062000a13908590600401620015ea565b600060405180830381865afa15801562000a31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a5b9190810190620016ae565b50905060008160008151811062000a765762000a7662001401565b60200260200101518260018151811062000a945762000a9462001401565b602002602001015162000aa8919062001786565b9050600062000abc61ffff861683620017b6565b905060008260060b12801562000ae3575062000add600186900b83620017fa565b60060b15155b1562000af9578062000af5816200181f565b9150505b600062000b068262000c45565b9050600062000b216001600160a01b038316806001620010a7565b9050600160c01b600062000b3f83670de0b6b3a764000084620010a7565b90508b62000be45762000b646ec097ce7bc90715b34b9f1000000000600183620010a7565b9050896060015160ff168a6080015160ff161062000bb45762000bac818b606001518c6080015162000b97919062001845565b62000ba490600a6200195e565b6001620010a7565b905062000c35565b62000bac8160018c608001518d6060015162000bd1919062001845565b62000bde90600a6200195e565b620010a7565b896060015160ff168a6080015160ff161062000c175762000bac8160018c606001518d6080015162000bd1919062001845565b62000c32818b608001518c6060015162000b97919062001845565b90505b9c9b505050505050505050505050565b60008060008360020b1262000c5e578260020b62000c6d565b8260020b62000c6d906200196f565b905062000c7e620d89e7196200198e565b60020b81111562000cb65760405162461bcd60e51b81526020600482015260016024820152601560fa1b60448201526064016200005d565b60008160011660000362000ccf57600160801b62000ce1565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03169050600282161562000d1957608062000d14826ffff97272373d413259a46990580e213a620015a3565b901c90505b600482161562000d4657608062000d41826ffff2e50f5f656932ef12357cf3c7fdcc620015a3565b901c90505b600882161562000d7357608062000d6e826fffe5caca7e10e4e61c3624eaa0941cd0620015a3565b901c90505b601082161562000da057608062000d9b826fffcb9843d60f6159c9db58835c926644620015a3565b901c90505b602082161562000dcd57608062000dc8826fff973b41fa98c081472e6896dfb254c0620015a3565b901c90505b604082161562000dfa57608062000df5826fff2ea16466c96a3843ec78b326b52861620015a3565b901c90505b608082161562000e2757608062000e22826ffe5dee046a99a2a811c461f1969c3053620015a3565b901c90505b61010082161562000e5557608062000e50826ffcbe86c7900a88aedcffc83b479aa3a4620015a3565b901c90505b61020082161562000e8357608062000e7e826ff987a7253ac413176f2b074cf7815e54620015a3565b901c90505b61040082161562000eb157608062000eac826ff3392b0822b70005940c7a398e4b70f3620015a3565b901c90505b61080082161562000edf57608062000eda826fe7159475a2c29b7443b29c7fa6e889d9620015a3565b901c90505b61100082161562000f0d57608062000f08826fd097f3bdfd2022b8845ad8f792aa5825620015a3565b901c90505b61200082161562000f3b57608062000f36826fa9f746462d870fdf8a65dc1f90e061e5620015a3565b901c90505b61400082161562000f6957608062000f64826f70d869a156d2a1b890bb3df62baf32f7620015a3565b901c90505b61800082161562000f9757608062000f92826f31be135f97d08fd981231505542fcfa6620015a3565b901c90505b6201000082161562000fc657608062000fc1826f09aa508b5b7a84e1c677de54f3e99bc9620015a3565b901c90505b6202000082161562000ff457608062000fef826e5d6af8dedb81196699c329225ee604620015a3565b901c90505b62040000821615620010215760806200101c826d2216e584f5fa1ea926041bedfe98620015a3565b901c90505b620800008216156200104c57608062001047826b048a170391f7dc42444e8fa2620015a3565b901c90505b60008460020b13156200106a576200106781600019620015d3565b90505b6200107b64010000000082620019b3565b15620010895760016200108c565b60005b6200109f9060ff16602083901c620019ca565b949350505050565b6000808060001985870985870292508281108382030391505080600003620010e35760008411620010d757600080fd5b50829004905062001248565b808411620010f057600080fd5b60008486880980840393811190920391905060008562001110816200196f565b16958690049593849004936000819003046001019050620011328184620015a3565b90931792600062001145876003620015a3565b6002189050620011568188620015a3565b62001163906002620019e0565b6200116f9082620015a3565b90506200117d8188620015a3565b6200118a906002620019e0565b620011969082620015a3565b9050620011a48188620015a3565b620011b1906002620019e0565b620011bd9082620015a3565b9050620011cb8188620015a3565b620011d8906002620019e0565b620011e49082620015a3565b9050620011f28188620015a3565b620011ff906002620019e0565b6200120b9082620015a3565b9050620012198188620015a3565b62001226906002620019e0565b620012329082620015a3565b9050620012408186620015a3565b955050505050505b9392505050565b6001600160a01b03811681146200126557600080fd5b50565b805162001275816200124f565b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620012bb57620012bb6200127a565b604052919050565b60006001600160401b03821115620012df57620012df6200127a565b5060051b60200190565b600080600080600080600080610100898b0312156200130757600080fd5b885162001314816200124f565b60208a810151919950906001600160401b038111156200133357600080fd5b8a01601f81018c136200134557600080fd5b80516200135c6200135682620012c3565b62001290565b81815260059190911b8201830190838101908e8311156200137c57600080fd5b928401925b82841015620013a757835162001397816200124f565b8252928401929084019062001381565b809b505050505050620013bd60408a0162001268565b95506060890151945060808901519350620013db60a08a0162001268565b9250620013eb60c08a0162001268565b915060e089015190509295985092959890939650565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200142a57600080fd5b815162001248816200124f565b6000602082840312156200144a57600080fd5b815160ff811681146200124857600080fd5b805161ffff811681146200127557600080fd5b6000602082840312156200148257600080fd5b62001248826200145c565b634e487b7160e01b600052601160045260246000fd5b600060018201620014b857620014b86200148d565b5060010190565b6000825160005b81811015620014e25760208186018101518583015201620014c6565b506000920191825250919050565b600080600080600080600060e0888a0312156200150c57600080fd5b875162001519816200124f565b8097505060208801518060020b81146200153257600080fd5b955062001542604089016200145c565b945062001552606089016200145c565b935062001562608089016200145c565b925060a088015163ffffffff811681146200157c57600080fd5b60c089015190925080151581146200159357600080fd5b8091505092959891949750929550565b80820281158282048414176200088a576200088a6200148d565b634e487b7160e01b600052601260045260246000fd5b600082620015e557620015e5620015bd565b500490565b6020808252825182820181905260009190848201906040850190845b818110156200162a57835163ffffffff168352928401929184019160010162001606565b50909695505050505050565b600082601f8301126200164857600080fd5b815160206200165b6200135683620012c3565b82815260059290921b840181019181810190868411156200167b57600080fd5b8286015b84811015620016a357805162001695816200124f565b83529183019183016200167f565b509695505050505050565b60008060408385031215620016c257600080fd5b82516001600160401b0380821115620016da57600080fd5b818501915085601f830112620016ef57600080fd5b81516020620017026200135683620012c3565b82815260059290921b840181019181810190898411156200172257600080fd5b948201945b83861015620017535785518060060b8114620017435760008081fd5b8252948201949082019062001727565b918801519196509093505050808211156200176d57600080fd5b506200177c8582860162001636565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff821317156200088a576200088a6200148d565b60008160060b8360060b80620017d057620017d0620015bd565b667fffffffffffff19821460001982141615620017f157620017f16200148d565b90059392505050565b60008260060b80620018105762001810620015bd565b808360060b0791505092915050565b60008160020b627fffff1981036200183b576200183b6200148d565b6000190192915050565b60ff82811682821603908111156200088a576200088a6200148d565b600181815b80851115620018a25781600019048211156200188657620018866200148d565b808516156200189457918102915b93841c939080029062001866565b509250929050565b600082620018bb575060016200088a565b81620018ca575060006200088a565b8160018114620018e35760028114620018ee576200190e565b60019150506200088a565b60ff8411156200190257620019026200148d565b50506001821b6200088a565b5060208310610133831016604e8410600b841016171562001933575081810a6200088a565b6200193f838362001861565b80600019048211156200195657620019566200148d565b029392505050565b60006200124860ff841683620018aa565b6000600160ff1b82016200198757620019876200148d565b5060000390565b60008160020b627fffff198103620019aa57620019aa6200148d565b60000392915050565b600082620019c557620019c5620015bd565b500690565b808201808211156200088a576200088a6200148d565b818103818111156200088a576200088a6200148d565b60805160a05160c05160e0516101005161012051611af962001a8c600039600081816102fc0152610489015260008181610176015281816104d30152610b5c01526000818161014f015261073501526000818161011501526107140152600081816101b501526106d501526000818161033e015281816103e90152818161055d015281816105a301526107b00152611af96000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806371c98d6d116100a2578063e1f1c4a711610071578063e1f1c4a7146102ee578063e941fa78146102f7578063eb91d37e1461031e578063f2fde38b14610326578063fc0c546a1461033957600080fd5b806371c98d6d1461028c5780638380edb7146102b25780638da5cb5b146102ca578063ac4afa38146102db57600080fd5b80633ccfd60b116100de5780633ccfd60b146101d757806342340a56146101e1578063570ca73514610271578063715018a61461028457600080fd5b806309503011146101105780631d0806ae1461014a5780631db9be1b14610171578063251c1aa3146101b0575b600080fd5b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6101987f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610141565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6101df610360565b005b6102336101ef3660046114a0565b6004602052600090815260409020805460018201546002909201546001600160a01b039182169282169181169060ff600160a01b8204811691600160a81b90041685565b604080516001600160a01b0396871681529486166020860152929094169183019190915260ff9081166060830152909116608082015260a001610141565b600354610198906001600160a01b031681565b6101df610613565b61029f61029a3660046114a0565b610625565b60405161ffff9091168152602001610141565b6102ba6106d1565b6040519015158152602001610141565b6000546001600160a01b0316610198565b6101986102e93660046114bd565b610779565b61013761271081565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6101376107a3565b6101df6103343660046114a0565b6108e4565b6101987f000000000000000000000000000000000000000000000000000000000000000081565b610368610927565b6000546001600160a01b0316331480159061038e57506003546001600160a01b03163314155b156103ac5760405163e6c4247b60e01b815260040160405180910390fd5b6103b46106d1565b6103d15760405163fa68006560e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045c91906114d6565b90508060000361047f57604051631e9acf1760e31b815260040160405180910390fd5b60006127106104ae7f000000000000000000000000000000000000000000000000000000000000000084611505565b6104b89190611532565b905060006104c68284611546565b90508115610584576105847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c415b95c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561052f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105539190611559565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169084610951565b6105ca6105996000546001600160a01b031690565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083610951565b604080518281526020810184905233917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568910160405180910390a250505061061160018055565b565b61061b6109a8565b61061160006109d5565b60408051600481526024810182526020810180516001600160e01b0316633850c7bd60e01b179052905160009182916001600160a01b0385169161066891611576565b600060405180830381855afa9150503d80600081146106a3576040519150601f19603f3d011682016040523d82523d6000602084013e6106a8565b606091505b509150506000818060200190518101906106c291906115bc565b50909998505050505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000042106107005750600190565b600061070a6107a3565b90506127106107597f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611505565b6107639190611532565b811061077157600191505090565b600091505090565b6002818154811061078957600080fd5b6000918252602090912001546001600160a01b0316905081565b6000670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000825b6002548110156108dc576000600282815481106107f0576107f0611663565b60009182526020822001546001600160a01b031691506108108285610a25565b9050600061081e8383610ae6565b9050670de0b6b3a76400006108338288611505565b61083d9190611532565b6001600160a01b03808516600090815260046020908152604091829020825160a081018452815485168152600182015485169281018390526002909101548085169382019390935260ff600160a01b840481166060830152600160a81b909304909216608083015292985091908716036108bd57806040015195506108c5565b806020015195505b5050505080806108d490611679565b9150506107d1565b509092915050565b6108ec6109a8565b6001600160a01b03811661091b57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610924816109d5565b50565b60026001540361094a57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526109a3908490610e7c565b505050565b6000546001600160a01b031633146106115760405163118cdaa760e01b8152336004820152602401610912565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038083166000908152600460209081526040808320815160a081018352815486168152600182015486169381018490526002909101548086169282019290925260ff600160a01b830481166060830152600160a81b9092049091166080820152919284169003610aa0576001915050610ae0565b826001600160a01b031681604001516001600160a01b031603610ac7576000915050610ae0565b604051633b88ff5b60e21b815260040160405180910390fd5b92915050565b6001600160a01b038083166000908152600460208181526040808420815160a08101835281548716815260018201548716818501526002909101548087168284015260ff600160a01b820481166060840152600160a81b90910416608082015281516303c1d5df60e41b815291519495909486947f000000000000000000000000000000000000000000000000000000000000000090921693633c1d5df09380840193919291908290030181865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca9190611692565b60408051600280825260608201835292935060009290916020830190803683370190505090508161ffff1681600081518110610c0857610c08611663565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110610c3757610c37611663565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0388169063883bdbfd90610c7b9085906004016116c3565b600060405180830381865afa158015610c98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cc091908101906117d6565b509050600081600081518110610cd857610cd8611663565b602002602001015182600181518110610cf357610cf3611663565b6020026020010151610d0591906118a2565b90506000610d1761ffff8616836118cf565b905060008260060b128015610d3b5750610d35600186900b8361190d565b60060b15155b15610d4e5780610d4a8161192f565b9150505b6000610d5982610ef3565b90506000610d726001600160a01b038316806001611313565b9050600160c01b6000610d8e83670de0b6b3a764000084611313565b90508b610e2257610db06ec097ce7bc90715b34b9f1000000000600183611313565b9050896060015160ff168a6080015160ff1610610df857610df1818b606001518c60800151610ddf9190611952565b610dea90600a611a4f565b6001611313565b9050610e6c565b610df18160018c608001518d60600151610e129190611952565b610e1d90600a611a4f565b611313565b896060015160ff168a6080015160ff1610610e5157610df18160018c606001518d60800151610e129190611952565b610e69818b608001518c60600151610ddf9190611952565b90505b9c9b505050505050505050505050565b600080602060008451602086016000885af180610e9f576040513d6000823e3d81fd5b50506000513d91508115610eb7578060011415610ec4565b6001600160a01b0384163b155b15610eed57604051635274afe760e01b81526001600160a01b0385166004820152602401610912565b50505050565b60008060008360020b12610f0a578260020b610f17565b8260020b610f1790611a5e565b9050610f26620d89e719611a7a565b60020b811115610f5c5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610912565b600081600116600003610f7357600160801b610f85565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610fc4576080610fbf826ffff97272373d413259a46990580e213a611505565b901c90505b6004821615610fee576080610fe9826ffff2e50f5f656932ef12357cf3c7fdcc611505565b901c90505b6008821615611018576080611013826fffe5caca7e10e4e61c3624eaa0941cd0611505565b901c90505b601082161561104257608061103d826fffcb9843d60f6159c9db58835c926644611505565b901c90505b602082161561106c576080611067826fff973b41fa98c081472e6896dfb254c0611505565b901c90505b6040821615611096576080611091826fff2ea16466c96a3843ec78b326b52861611505565b901c90505b60808216156110c05760806110bb826ffe5dee046a99a2a811c461f1969c3053611505565b901c90505b6101008216156110eb5760806110e6826ffcbe86c7900a88aedcffc83b479aa3a4611505565b901c90505b610200821615611116576080611111826ff987a7253ac413176f2b074cf7815e54611505565b901c90505b61040082161561114157608061113c826ff3392b0822b70005940c7a398e4b70f3611505565b901c90505b61080082161561116c576080611167826fe7159475a2c29b7443b29c7fa6e889d9611505565b901c90505b611000821615611197576080611192826fd097f3bdfd2022b8845ad8f792aa5825611505565b901c90505b6120008216156111c25760806111bd826fa9f746462d870fdf8a65dc1f90e061e5611505565b901c90505b6140008216156111ed5760806111e8826f70d869a156d2a1b890bb3df62baf32f7611505565b901c90505b618000821615611218576080611213826f31be135f97d08fd981231505542fcfa6611505565b901c90505b6201000082161561124457608061123f826f09aa508b5b7a84e1c677de54f3e99bc9611505565b901c90505b6202000082161561126f57608061126a826e5d6af8dedb81196699c329225ee604611505565b901c90505b62040000821615611299576080611294826d2216e584f5fa1ea926041bedfe98611505565b901c90505b620800008216156112c15760806112bc826b048a170391f7dc42444e8fa2611505565b901c90505b60008460020b13156112dc576112d981600019611532565b90505b6112eb64010000000082611a9c565b156112f75760016112fa565b60005b61130b9060ff16602083901c611ab0565b949350505050565b600080806000198587098587029250828110838203039150508060000361134c576000841161134157600080fd5b508290049050611484565b80841161135857600080fd5b60008486880980840393811190920391905060008561137681611a5e565b169586900495938490049360008190030460010190506113968184611505565b9093179260006113a7876003611505565b60021890506113b68188611505565b6113c1906002611546565b6113cb9082611505565b90506113d78188611505565b6113e2906002611546565b6113ec9082611505565b90506113f88188611505565b611403906002611546565b61140d9082611505565b90506114198188611505565b611424906002611546565b61142e9082611505565b905061143a8188611505565b611445906002611546565b61144f9082611505565b905061145b8188611505565b611466906002611546565b6114709082611505565b905061147c8186611505565b955050505050505b9392505050565b6001600160a01b038116811461092457600080fd5b6000602082840312156114b257600080fd5b81356114848161148b565b6000602082840312156114cf57600080fd5b5035919050565b6000602082840312156114e857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610ae057610ae06114ef565b634e487b7160e01b600052601260045260246000fd5b6000826115415761154161151c565b500490565b81810381811115610ae057610ae06114ef565b60006020828403121561156b57600080fd5b81516114848161148b565b6000825160005b81811015611597576020818601810151858301520161157d565b506000920191825250919050565b805161ffff811681146115b757600080fd5b919050565b600080600080600080600060e0888a0312156115d757600080fd5b87516115e28161148b565b8097505060208801518060020b81146115fa57600080fd5b9550611608604089016115a5565b9450611616606089016115a5565b9350611624608089016115a5565b925060a088015163ffffffff8116811461163d57600080fd5b60c0890151909250801515811461165357600080fd5b8091505092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b60006001820161168b5761168b6114ef565b5060010190565b6000602082840312156116a457600080fd5b611484826115a5565b634e487b7160e01b600052604160045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561170157835163ffffffff16835292840192918401916001016116df565b50909695505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715611736576117366116ad565b604052919050565b600067ffffffffffffffff821115611758576117586116ad565b5060051b60200190565b600082601f83011261177357600080fd5b815160206117886117838361173e565b61170d565b82815260059290921b840181019181810190868411156117a757600080fd5b8286015b848110156117cb5780516117be8161148b565b83529183019183016117ab565b509695505050505050565b600080604083850312156117e957600080fd5b825167ffffffffffffffff8082111561180157600080fd5b818501915085601f83011261181557600080fd5b815160206118256117838361173e565b82815260059290921b8401810191818101908984111561184457600080fd5b948201945b838610156118725785518060060b81146118635760008081fd5b82529482019490820190611849565b9188015191965090935050508082111561188b57600080fd5b5061189885828601611762565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff82131715610ae057610ae06114ef565b60008160060b8360060b806118e6576118e661151c565b667fffffffffffff19821460001982141615611904576119046114ef565b90059392505050565b60008260060b806119205761192061151c565b808360060b0791505092915050565b60008160020b627fffff198103611948576119486114ef565b6000190192915050565b60ff8281168282160390811115610ae057610ae06114ef565b600181815b808511156119a657816000190482111561198c5761198c6114ef565b8085161561199957918102915b93841c9390800290611970565b509250929050565b6000826119bd57506001610ae0565b816119ca57506000610ae0565b81600181146119e057600281146119ea57611a06565b6001915050610ae0565b60ff8411156119fb576119fb6114ef565b50506001821b610ae0565b5060208310610133831016604e8410600b8410161715611a29575081810a610ae0565b611a33838361196b565b8060001904821115611a4757611a476114ef565b029392505050565b600061148460ff8416836119ae565b6000600160ff1b8201611a7357611a736114ef565b5060000390565b60008160020b627fffff198103611a9357611a936114ef565b60000392915050565b600082611aab57611aab61151c565b500690565b80820180821115610ae057610ae06114ef56fea264697066735822122057fd7fc47d591a40abd413f35178b19670a67e5785161c62bf88cc56038a550b64736f6c63430008140033a2646970667358221220902e9c1f8af1d437d41ddd800df1f7c978c22886db1abad98273faa727bc1b3f64736f6c63430008140033000000000000000000000000333a16307d8bef80616f719e958af5c76290ca85000000000000000000000000521faacdfa097ad35a32387727e468f7fd032fd6000000000000000000000000000000000000000000000000000000000000012c