72 txs
73 calls
constructor
constructor((uint256 registerStart, uint256 registerEnd, uint256 stakingRoundStart, uint256 stakingRoundEnd, uint256 publicRoundStart, uint256 publicRoundEnd) _saleTimes, address _allocationProvider, address _usdToken, uint256 _projectTokenPrice, uint256 _projectTokenAmount, uint256 _totalSaleValueCap, address _saleClaimAddress, address _feeClaimAddress, address _stakingAmounts)
functions
allocationProvider
viewfunction allocationProvider() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
depositableOf
viewfunction depositableOf(address _account) view returns (uint256)
depositAmountWithFees
viewfunction depositAmountWithFees(uint256 _amount) view returns (uint256)
depositedOf
viewfunction depositedOf(address _account) view returns (uint256)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
FCFS_ROUND_FEE
viewfunction FCFS_ROUND_FEE() view returns (uint8)
feeClaimAddress
viewfunction feeClaimAddress() view returns (address)
getDepositAmounts
viewfunction getDepositAmounts(uint256 _start, uint256 _end) view returns (address[], uint256[])
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getSaleNom
viewfunction getSaleNom() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isFcfs
viewfunction isFcfs() view returns (bool)
isPublicRound
viewfunction isPublicRound() view returns (bool)
isRegistered
viewfunction isRegistered(address _account) view returns (bool)
isStakingRound
viewfunction isStakingRound() view returns (bool)
max_signature_delay
viewfunction max_signature_delay() view returns (uint256)
participantAt
viewfunction participantAt(uint256 index) view returns (address)
participantCount
viewfunction participantCount() view returns (uint256)
participantsBetween
viewfunction participantsBetween(uint256 start, uint256 end) view returns (address[])
paused
viewfunction paused() view returns (bool)
PUBLIC_ROUND_FEE
viewfunction PUBLIC_ROUND_FEE() view returns (uint8)
publicRoundAllocationOf
viewfunction publicRoundAllocationOf(address _account) view returns (uint256)
publicSaleDepositedOf
viewfunction publicSaleDepositedOf(address _account) view returns (uint256)
saleClaimAddress
viewfunction saleClaimAddress() view returns (address)
saleDetails
viewfunction saleDetails() view returns (uint256 totalSaleValueCap, uint256 projectTokenPrice, uint256 projectTokenAmount, address saleClaimAddress, address feeClaimAddress, uint256 totalSaleValue, uint256 totalGuaranteedSaleValue, uint256 totalPublicSaleValue, uint256 publicSaleDepositCap, address stakingAmounts, uint256 minStake, uint256 registerFee, uint8 nom, uint8 denom)
saleTimes
viewfunction saleTimes() view returns (uint256 registerStart, uint256 registerEnd, uint256 stakingRoundStart, uint256 stakingRoundEnd, uint256 publicRoundStart, uint256 publicRoundEnd)
SIGNER
viewfunction SIGNER() view returns (bytes32)
STAKING_ROUND_FEE
viewfunction STAKING_ROUND_FEE() view returns (uint8)
stakingRoundAllocationOf
viewfunction stakingRoundAllocationOf(address _account) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalSaleValue
viewfunction totalSaleValue() view returns (uint256)
totalSaleValueCap
viewfunction totalSaleValueCap() view returns (uint256)
usdToken
viewfunction usdToken() view returns (address)
activateFCFS
nonpayablefunction activateFCFS()
adminRegister
nonpayablefunction adminRegister(address _user)
batchAdminRegister
nonpayablefunction batchAdminRegister(address[] _users)
deactivateFCFS
nonpayablefunction deactivateFCFS()
deposit
nonpayablefunction deposit(uint256 _amount, uint256 _timestamp, bytes _signature)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pause
nonpayablefunction pause()
register
payablefunction register(uint256 _timestamp, bytes _signature) payable
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setFees
nonpayablefunction setFees(uint8 _stakingRoundFee, uint8 _publicRoundFee, uint8 _fcsfRoundFee)
setPublicRoundMultiplier
nonpayablefunction setPublicRoundMultiplier(uint8 _nom, uint8 _denom)
setPublicSaleCap
nonpayablefunction setPublicSaleCap(uint256 _publicSaleDepositCap)
setRegisterFee
nonpayablefunction setRegisterFee(uint256 _registerFee)
setSaleCap
nonpayablefunction setSaleCap(uint256 _totalSaleValueCap)
setStakingAmounts
nonpayablefunction setStakingAmounts(address _stakingAmounts, uint256 _minStake)
unpause
nonpayablefunction unpause()
updateAllocationProvider
nonpayablefunction updateAllocationProvider(address _allocationProvider)
updateFeeClaimAddress
nonpayablefunction updateFeeClaimAddress(address _newAddress)
updateSaleClaimAddress
nonpayablefunction updateSaleClaimAddress(address _newAddress)
updateTimes
nonpayablefunction updateTimes(tuple _saleTimes)
events
Deposit
event Deposit(address _account, uint256 _amount)
EIP712DomainChanged
event EIP712DomainChanged()
Paused
event Paused(address account)
Registered
event Registered(address _account)
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)
Unpaused
event Unpaused(address account)
errors
InvalidShortString
error InvalidShortString()
StringTooLong
error StringTooLong(string str)
creation bytecode
0x61018060405260b46005556006805464ffffffff00191690553480156200002557600080fd5b5060405162004bae38038062004bae833981016040819052620000489162000835565b604080518082018252600b81526a50726f6a65637453616c6560a81b60208083019190915282518084019093526001808452603160f81b848301526000819055805460ff19169055909190620000ac908390600390620025b1620006c7821b17901c565b61012052620000c9816004620006c7602090811b620025b117901c565b61014052815160208084019190912060e052815190820120610100524660a0526200015760e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526020890151895110620001e05760405162461bcd60e51b815260206004820152603560248201527f50726f6a65637453616c653a2072656769737465725374617274206d7573742060448201527f6265206265666f7265207265676973746572456e64000000000000000000000060648201526084015b60405180910390fd5b88604001518960200151106200025f5760405162461bcd60e51b815260206004820152603960248201527f50726f6a65637453616c653a207265676973746572456e64206d75737420626560448201527f206265666f7265207374616b696e67526f756e645374617274000000000000006064820152608401620001d7565b8860600151896040015110620002de5760405162461bcd60e51b815260206004820152603d60248201527f50726f6a65637453616c653a207374616b696e67526f756e645374617274206d60448201527f757374206265206265666f7265207374616b696e67526f756e64456e640000006064820152608401620001d7565b88608001518960600151106200035d5760405162461bcd60e51b815260206004820152603c60248201527f50726f6a65637453616c653a207374616b696e67526f756e64456e64206d757360448201527f74206265206265666f7265207075626c6963526f756e645374617274000000006064820152608401620001d7565b8860a00151896080015110620003dc5760405162461bcd60e51b815260206004820152603b60248201527f50726f6a65637453616c653a207075626c6963526f756e645374617274206d7560448201527f7374206265206265666f7265207075626c6963526f756e64456e6400000000006064820152608401620001d7565b83670de0b6b3a7640000620003f2878962000958565b620003fe91906200097a565b146200044d5760405162461bcd60e51b815260206004820152601f60248201527f50726f6a65637453616c653a20696e76616c69642073616c652076616c7565006044820152606401620001d7565b6001600160a01b038816620004cb5760405162461bcd60e51b815260206004820152603760248201527f50726f6a65637453616c653a20616c6c6f636174696f6e2070726f766964657260448201527f2063616e6e6f74206265207a65726f20616464726573730000000000000000006064820152608401620001d7565b6001600160a01b038116620005495760405162461bcd60e51b815260206004820152603360248201527f50726f6a65637453616c653a207374616b696e6720616d6f756e74732063616e60448201527f6e6f74206265207a65726f2061646472657373000000000000000000000000006064820152608401620001d7565b88516014556020808a01516015556040808b015160165560608b015160175560808b015160185560a08b01516019556001600160a01b038916610160819052600787905560088990556009889055815163313ce56760e01b81529151909263313ce56792600481810193918290030181865afa158015620005ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005f491906200099d565b6200060190600a62000ac6565b6200060f90613a9862000958565b600f55601080546001600160a01b03199081166001600160a01b03848116919091179092556006805464ffffffff01600160c81b031916650100000000008c851602179055601b80548216858416179055601a80549091169185169190911790556013805461ffff191661280a1790556200068c60003362000717565b620006b87f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca403362000717565b50505050505050505062000ca7565b6000602083511015620006e757620006df83620007bc565b905062000711565b82620006fe83620007ff60201b620025e21760201c565b906200070b908262000b66565b5060ff90505b92915050565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff16620007b85760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620007773390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080829050601f81511115620007ea578260405163305a27a960e01b8152600401620001d7919062000c32565b8051620007f78262000c82565b179392505050565b90565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200083057600080fd5b919050565b6000806000806000806000806000898b036101c08112156200085657600080fd5b60c08112156200086557600080fd5b5060405160c081016001600160401b03811182821017156200088b576200088b62000802565b80604052508a51815260208b0151602082015260408b0151604082015260608b0151606082015260808b0151608082015260a08b015160a082015280995050620008d860c08b0162000818565b9750620008e860e08b0162000818565b96506101008a015195506101208a015194506101408a01519350620009116101608b0162000818565b9250620009226101808b0162000818565b9150620009336101a08b0162000818565b90509295985092959850929598565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562000975576200097562000942565b500290565b6000826200099857634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620009b057600080fd5b815160ff81168114620009c257600080fd5b9392505050565b600181815b8085111562000a0a578160001904821115620009ee57620009ee62000942565b80851615620009fc57918102915b93841c9390800290620009ce565b509250929050565b60008262000a235750600162000711565b8162000a325750600062000711565b816001811462000a4b576002811462000a565762000a76565b600191505062000711565b60ff84111562000a6a5762000a6a62000942565b50506001821b62000711565b5060208310610133831016604e8410600b841016171562000a9b575081810a62000711565b62000aa78383620009c9565b806000190482111562000abe5762000abe62000942565b029392505050565b6000620009c260ff84168362000a12565b600181811c9082168062000aec57607f821691505b60208210810362000b0d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b6157600081815260208120601f850160051c8101602086101562000b3c5750805b601f850160051c820191505b8181101562000b5d5782815560010162000b48565b5050505b505050565b81516001600160401b0381111562000b825762000b8262000802565b62000b9a8162000b93845462000ad7565b8462000b13565b602080601f83116001811462000bd2576000841562000bb95750858301515b600019600386901b1c1916600185901b17855562000b5d565b600085815260208120601f198616915b8281101562000c035788860151825594840194600190910190840162000be2565b508582101562000c225787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b8181101562000c615785810183015185820160400152820162000c43565b506000604082860101526040601f19601f8301168501019250505092915050565b8051602080830151919081101562000b0d5760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051613e8c62000d2260003960008181610b0d01528181611cc401528181611d0c0152611df0015260006117c3015260006117980152600061303c0152600061301401526000612f6f01526000612f9901526000612fc30152613e8c6000f3fe6080604052600436106103505760003560e01c80636f6a46b1116101c6578063aa8af221116100f7578063e230712811610095578063e729ccd91161006f578063e729ccd914610abb578063f6794fdb14610adb578063f897a22b14610afb578063fd8dd42c14610b2f57600080fd5b8063e230712814610a5b578063e31964f914610a7b578063e5daeecd14610a9b57600080fd5b8063d3d37a31116100d1578063d3d37a31146109e6578063d3dd9f7414610a06578063d547741f14610a1b578063d776965114610a3b57600080fd5b8063aa8af22114610991578063c090746f146109a6578063c3c5a547146109c657600080fd5b80638456cb591161016457806392be2ab81161013e57806392be2ab81461091b5780639c75bd301461093b578063a217fddf1461095c578063aa0b7db71461097157600080fd5b80638456cb59146108be57806384b0196e146108d357806391d14854146108fb57600080fd5b806375cd11ad116101a057806375cd11ad1461084b578063765718d71461086b57806377f405641461087e57806382cf4bc41461089e57600080fd5b80636f6a46b1146107f65780636fdcbef41461081657806374288f721461082b57600080fd5b80633474a4a6116102a057806351c6476b1161023e5780635c975abb116102185780635c975abb146107885780635c99d8cc146107a05780636da518de146107c05780636f12bbe7146107d657600080fd5b806351c6476b1461070957806352f230111461073f578063582abd121461075457600080fd5b806336568abe1161027a57806336568abe1461068c5780633f4ba83a146106ac5780634a36fdb4146106c15780634e36ee6a146106e857600080fd5b80633474a4a61461058257806334f95dd514610662578063362f04c01461067757600080fd5b80630b5d000c1161030d578063238041a9116102e7578063238041a9146104f2578063248a9ca3146105125780632f2ff15d146105425780632f91926e1461056257600080fd5b80630b5d000c1461048e578063128e1d2f146104bb5780631f5b9d3b146104dd57600080fd5b806301ffc9a7146103555780630232ebc11461038a57806302fcc998146103bb578063065bab2d1461041357806307d7d9231461044b5780630a276c7514610479575b600080fd5b34801561036157600080fd5b506103756103703660046134b1565b610b5d565b60405190151581526020015b60405180910390f35b34801561039657600080fd5b506006546103a990610100900460ff1681565b60405160ff9091168152602001610381565b3480156103c757600080fd5b506014546015546016546017546018546019546103e695949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610381565b34801561041f57600080fd5b5061043361042e3660046134db565b610b94565b6040516001600160a01b039091168152602001610381565b34801561045757600080fd5b5061046b6104663660046134db565b610bfe565b604051908152602001610381565b34801561048557600080fd5b5060075461046b565b34801561049a57600080fd5b506104ae6104a93660046134f4565b610cab565b604051610381919061355a565b3480156104c757600080fd5b506104db6104d6366004613584565b610e08565b005b3480156104e957600080fd5b50600c5461046b565b3480156104fe57600080fd5b5061046b61050d366004613584565b610e5c565b34801561051e57600080fd5b5061046b61052d3660046134db565b60009081526002602052604090206001015490565b34801561054e57600080fd5b506104db61055d36600461359f565b610ee7565b34801561056e57600080fd5b50601a54610433906001600160a01b031681565b34801561058e57600080fd5b50600754600854600954600a54600b54600c54600d54600e54600f546010546011546012546013546105e39c9b9a996001600160a01b0390811699811698979695941692919060ff808216916101009004168e565b604080519e8f5260208f019d909d529b8d019a909a526001600160a01b0398891660608d015296881660808c015260a08b019590955260c08a019390935260e089019190915261010088015290921661012086015261014085019190915261016084015260ff908116610180840152166101a08201526101c001610381565b34801561066e57600080fd5b5061046b610f11565b34801561068357600080fd5b5061046b610f5d565b34801561069857600080fd5b506104db6106a736600461359f565b610f6e565b3480156106b857600080fd5b506104db610fec565b3480156106cd57600080fd5b5060065461043390600160281b90046001600160a01b031681565b3480156106f457600080fd5b506006546103a9906301000000900460ff1681565b34801561071557600080fd5b5061046b610724366004613584565b6001600160a01b031660009081526022602052604090205490565b34801561074b57600080fd5b50610375611002565b34801561076057600080fd5b5061046b7f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca4081565b34801561079457600080fd5b5060015460ff16610375565b3480156107ac57600080fd5b5061046b6107bb366004613584565b61101c565b3480156107cc57600080fd5b5061046b60055481565b3480156107e257600080fd5b506104db6107f1366004613584565b611046565b34801561080257600080fd5b506104db610811366004613612565b6110fc565b34801561082257600080fd5b506103756111e1565b34801561083757600080fd5b5061046b610846366004613584565b6111fb565b34801561085757600080fd5b50601b54610433906001600160a01b031681565b6104db61087936600461372f565b611300565b34801561088a57600080fd5b506104db610899366004613584565b611661565b3480156108aa57600080fd5b506104db6108b93660046134db565b611716565b3480156108ca57600080fd5b506104db611777565b3480156108df57600080fd5b506108e861178a565b60405161038197969594939291906137f6565b34801561090757600080fd5b5061037561091636600461359f565b611813565b34801561092757600080fd5b506104db6109363660046134db565b61183e565b34801561094757600080fd5b5060065461037590600160201b900460ff1681565b34801561096857600080fd5b5061046b600081565b34801561097d57600080fd5b506104db61098c366004613866565b61184f565b34801561099d57600080fd5b506104db611e62565b3480156109b257600080fd5b506104db6109c13660046138b6565b611ee5565b3480156109d257600080fd5b506103756109e1366004613584565b611f89565b3480156109f257600080fd5b506104db610a013660046134db565b611f96565b348015610a1257600080fd5b506104db611fa7565b348015610a2757600080fd5b506104db610a3636600461359f565b612096565b348015610a4757600080fd5b506104db610a563660046138e0565b6120bb565b348015610a6757600080fd5b5061046b610a76366004613584565b612237565b348015610a8757600080fd5b506104db610a9636600461396b565b61233e565b348015610aa757600080fd5b506006546103a99062010000900460ff1681565b348015610ac757600080fd5b506104db610ad6366004613584565b61236e565b348015610ae757600080fd5b506104db610af6366004613995565b6123c2565b348015610b0757600080fd5b506104337f000000000000000000000000000000000000000000000000000000000000000081565b348015610b3b57600080fd5b50610b4f610b4a3660046134f4565b61240f565b6040516103819291906139d8565b60006001600160e01b03198216637965db0b60e01b1480610b8e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000610ba060236125e5565b8210610bf35760405162461bcd60e51b815260206004820181905260248201527f50726f6a65637453616c653a20696e646578206f7574206f6620626f756e647360448201526064015b60405180910390fd5b610b8e6023836125ef565b6016546000904210801590610c1557506017544211155b15610c4b57600654606490610c34906301000000900460ff1682613a1c565b610c419060ff1684613a35565b610b8e9190613a54565b6018544210801590610c5f57506019544211155b15610ca757600654600160201b900460ff1615610c8e57600654606490610c3490610100900460ff1682613a1c565b600654606490610c349062010000900460ff1682613a1c565b5090565b606081831115610cfd5760405162461bcd60e51b815260206004820152601860248201527f50726f6a65637453616c653a207374617274203e20656e6400000000000000006044820152606401610bea565b610d0760236125e5565b821115610d565760405162461bcd60e51b815260206004820181905260248201527f50726f6a65637453616c653a20696e646578206f7574206f6620626f756e64736044820152606401610bea565b6000610d628484613a76565b67ffffffffffffffff811115610d7a57610d7a6135cb565b604051908082528060200260200182016040528015610da3578160200160208202803683370190505b509050835b83811015610e0057610dbb6023826125ef565b82610dc68784613a76565b81518110610dd657610dd6613a89565b6001600160a01b039092166020928302919091019091015280610df881613a9f565b915050610da8565b509392505050565b6000610e13816125fb565b6001600160a01b038216610e395760405162461bcd60e51b8152600401610bea90613ab8565b50601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e678261101c565b60065460405163a4f82f2760e01b81526001600160a01b038581166004830152600160281b9092049091169063a4f82f2790602401602060405180830381865afa158015610eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edd9190613afb565b610b8e9190613a76565b600082815260026020526040902060010154610f02816125fb565b610f0c8383612605565b505050565b60135460009060ff16600a14610f2b575060135460ff1690565b600754600d5460009190610f40906064613a35565b610f4a9190613a54565b9050610f57816064613a76565b91505090565b6000610f6960236125e5565b905090565b6001600160a01b0381163314610fde5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610bea565b610fe8828261268b565b5050565b6000610ff7816125fb565b610fff6126f2565b50565b6016546000904210801590610f6957505060175442111590565b6000808061102b601c85612744565b91509150811561103c579392505050565b5060009392505050565b6000611051816125fb565b6001600160a01b0382166110cd5760405162461bcd60e51b815260206004820152603760248201527f50726f6a65637453616c653a20616c6c6f636174696f6e2070726f766964657260448201527f2063616e6e6f74206265207a65726f20616464726573730000000000000000006064820152608401610bea565b50600680546001600160a01b03909216600160281b0265010000000000600160c81b0319909216919091179055565b6000611107816125fb565b61110f612769565b60005b8251811015610f0c5761113d83828151811061113057611130613a89565b6020026020010151611f89565b6111cf5761116e83828151811061115657611156613a89565b602002602001015160236127b190919063ffffffff16565b507f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e98382815181106111a2576111a2613a89565b60200260200101516040516111c691906001600160a01b0391909116815260200190565b60405180910390a15b806111d981613a9f565b915050611112565b6018546000904210801590610f6957505060195442111590565b600061120682611f89565b80156112155750611215611002565b80611221575060165442105b1561122f57610b8e82610e5c565b6112376111e1565b801561124d5750600654600160201b900460ff16155b1561125b57610b8e82612237565b6112636111e1565b80156112785750600654600160201b900460ff165b156112f357600c5460075461128d9190613a76565b6001600160a01b038316600090815260226020526040902054600f546112b39190613a76565b106112cd57600c546007546112c89190613a76565b610b8e565b6001600160a01b038216600090815260226020526040902054600f54610b8e9190613a76565b506000919050565b919050565b611308612769565b6014544210156113775760405162461bcd60e51b815260206004820152603460248201527f50726f6a65637453616c653a20726567697374726174696f6e20706572696f64604482015273081a185cc81b9bdd081cdd185c9d1959081e595d60621b6064820152608401610bea565b6015544211156113dc5760405162461bcd60e51b815260206004820152602a60248201527f50726f6a65637453616c653a20726567697374726174696f6e20706572696f64604482015269081a185cc8195b99195960b21b6064820152608401610bea565b6005546113e99083613b14565b4211156114085760405162461bcd60e51b8152600401610bea90613b27565b6114133383836127c6565b61142f5760405162461bcd60e51b8152600401610bea90613b68565b61143833611f89565b156114855760405162461bcd60e51b815260206004820152601f60248201527f50726f6a65637453616c653a20616c72656164792072656769737465726564006044820152606401610bea565b6012543410156114d75760405162461bcd60e51b815260206004820152601d60248201527f50726f6a65637453616c653a20696e73756666696369656e74206665650000006044820152606401610bea565b6114e26023336127b1565b506012541561158757601b546012546040516000926001600160a01b031691908381818185875af1925050503d806000811461153a576040519150601f19603f3d011682016040523d82523d6000602084013e61153f565b606091505b50509050806115855760405162461bcd60e51b81526020600482015260126024820152714661696c656420746f2073656e642066656560701b6044820152606401610bea565b505b6012546000906115979034613a76565b9050801561162957604051600090339083908381818185875af1925050503d80600081146115e1576040519150601f19603f3d011682016040523d82523d6000602084013e6115e6565b606091505b50509050806116275760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b6044820152606401610bea565b505b6040513381527f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e99060200160405180910390a1505050565b600061166c816125fb565b611674612769565b61167d82611f89565b156116ca5760405162461bcd60e51b815260206004820152601f60248201527f50726f6a65637453616c653a20616c72656164792072656769737465726564006044820152606401610bea565b6116d56023836127b1565b506040516001600160a01b03831681527f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e99060200160405180910390a15050565b6000611721816125fb565b600082116117715760405162461bcd60e51b815260206004820152601f60248201527f50726f6a65637453616c653a206361702063616e6e6f74206265207a65726f006044820152606401610bea565b50600f55565b6000611782816125fb565b610fff612873565b6000606080828080836117be7f000000000000000000000000000000000000000000000000000000000000000060036128ae565b6117e97f000000000000000000000000000000000000000000000000000000000000000060046128ae565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000611849816125fb565b50601255565b611857612952565b61185f612769565b60055461186c9083613b14565b42111561188b5760405162461bcd60e51b8152600401610bea90613b27565b6118963383836127c6565b6118b25760405162461bcd60e51b8152600401610bea90613b68565b600083116119025760405162461bcd60e51b815260206004820152601b60248201527f50726f6a65637453616c653a20616d6f756e74206973207a65726f00000000006044820152606401610bea565b61190a611002565b801561191a575061191a33611f89565b8061192857506119286111e1565b6119805760405162461bcd60e51b815260206004820152602360248201527f50726f6a65637453616c653a206e6f7420616c6c6f77656420746f206465706f6044820152621cda5d60ea1b6064820152608401610bea565b600061198b336111fb565b9050600081116119ed5760405162461bcd60e51b815260206004820152602760248201527f50726f6a65637453616c653a206465706f73697461626c6520616d6f756e74206044820152666973207a65726f60c81b6064820152608401610bea565b60006119f76111e1565b15611be657600f5433600090815260226020526040902054611a1a908790613b14565b1115611a385760405162461bcd60e51b8152600401610bea90613ba9565b81851115611a44578194505b600654600160201b900460ff1615611b7c5760115460105460405163af500ba360e01b81523360048201526001600160a01b039091169063af500ba390602401602060405180830381865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac59190613afb565b1015611b535760405162461bcd60e51b815260206004820152605160248201527f50726f6a65637453616c653a20596f7520646f206e6f74206861766520656e6f60448201527f756768205374616b65642046494e4320746f20706172746963697061746520696064820152706e20746865205075626c69632053616c6560781b608482015260a401610bea565b600654606490611b6b90610100900460ff1687613a35565b611b759190613a54565b9050611ba2565b600654606490611b959062010000900460ff1687613a35565b611b9f9190613a54565b90505b3360009081526022602052604081208054879290611bc1908490613b14565b9091555050600e8054869190600090611bdb908490613b14565b90915550611c2d9050565b81851115611c065760405162461bcd60e51b8152600401610bea90613ba9565b600654606490611c20906301000000900460ff1687613a35565b611c2a9190613a54565b90505b600080611c3b601c33612744565b915091508115611c6257611c5c33611c538984613b14565b601c91906129ab565b50611c70565b611c6e601c33896129ab565b505b8660076005016000828254611c859190613b14565b90915550611c939050611002565b15611cb3578660076006016000828254611cad9190613b14565b90915550505b601a54611cef906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116913391168a6129c9565b8215611e1b576040516370a0823160e01b815233600482015283907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7f9190613afb565b1015611ddf5760405162461bcd60e51b815260206004820152602960248201527f50726f6a65637453616c653a20696e73756666696369656e742062616c616e636044820152686520666f722066656560b81b6064820152608401610bea565b601b54611e1b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691339116866129c9565b60408051338152602081018990527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c910160405180910390a150505050610f0c6001600055565b6000611e6d816125fb565b600654600160201b900460ff16611ed45760405162461bcd60e51b815260206004820152602560248201527f50726f6a65637453616c653a204643465320697320616c726561647920696e61604482015264637469766560d81b6064820152608401610bea565b506006805464ff0000000019169055565b6000611ef0816125fb565b6001600160a01b038316611f625760405162461bcd60e51b815260206004820152603360248201527f50726f6a65637453616c653a207374616b696e6720616d6f756e74732063616e6044820152726e6f74206265207a65726f206164647265737360681b6064820152608401610bea565b50601080546001600160a01b0319166001600160a01b039390931692909217909155601155565b6000610b8e602383612a29565b6000611fa1816125fb565b50600755565b6000611fb2816125fb565b600654600160201b900460ff16156120185760405162461bcd60e51b815260206004820152602360248201527f50726f6a65637453616c653a204643465320697320616c72656164792061637460448201526269766560e81b6064820152608401610bea565b601854421161207f5760405162461bcd60e51b815260206004820152602d60248201527f50726f6a65637453616c653a205075626c696320726f756e6420686173206e6f60448201526c1d081cdd185c9d1959081e595d609a1b6064820152608401610bea565b506006805464ff000000001916600160201b179055565b6000828152600260205260409020600101546120b1816125fb565b610f0c838361268b565b60006120c6816125fb565b600060065460ff1660018111156120df576120df613bf7565b1461212c5760405162461bcd60e51b815260206004820152601e60248201527f50726f6a65637453616c653a2073616c652069732066696e616c697a656400006044820152606401610bea565b60208201518251108015612147575081606001518260400151105b801561215a57508160a001518260800151105b6121a25760405162461bcd60e51b815260206004820152601960248201527850726f6a65637453616c653a20696e76616c69642074696d6560381b6044820152606401610bea565b816040015182602001511080156121c0575081608001518260600151105b6122085760405162461bcd60e51b815260206004820152601960248201527850726f6a65637453616c653a20696e76616c69642074696d6560381b6044820152606401610bea565b508051601455602081015160155560408101516016556060810151601755608081015160185560a00151601955565b6013546000908190610100900460ff1661224f610f11565b60065460405163a4f82f2760e01b81526001600160a01b038781166004830152600160281b9092049091169063a4f82f2790602401602060405180830381865afa1580156122a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c59190613afb565b6122cf9190613a35565b6122d99190613a54565b600f549091508111156122eb5750600f545b6001600160a01b03831660009081526022602052604090205461230e9082613a76565b600c5460075491925061232091613a76565b811115610b8e57600c546007546123379190613a76565b9392505050565b6000612349816125fb565b506013805460ff9283166101000261ffff199091169290931691909117919091179055565b6000612379816125fb565b6001600160a01b03821661239f5760405162461bcd60e51b8152600401610bea90613ab8565b50601b80546001600160a01b0319166001600160a01b0392909216919091179055565b60006123cd816125fb565b506006805463ffff00001916630100000060ff9586160262ff000019161762010000938516939093029290921761ff0019166101009190931602919091179055565b60608061241c601c612a4b565b8311156124305761242d601c612a4b565b92505b8284106124755760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e6e8c2e4e840d2dcc8caf606b1b6044820152606401610bea565b60006124818585613a76565b67ffffffffffffffff811115612499576124996135cb565b6040519080825280602002602001820160405280156124c2578160200160208202803683370190505b50905060006124d18686613a76565b67ffffffffffffffff8111156124e9576124e96135cb565b604051908082528060200260200182016040528015612512578160200160208202803683370190505b509050855b858110156125a35760008061252d601c84612a56565b9092509050818561253e8b86613a76565b8151811061254e5761254e613a89565b6001600160a01b039092166020928302919091019091015280846125728b86613a76565b8151811061258257612582613a89565b6020026020010181815250505050808061259b90613a9f565b915050612517565b5090925090505b9250929050565b60006020835110156125cd576125c683612a65565b9050610b8e565b816125d88482613c95565b5060ff9050610b8e565b90565b6000610b8e825490565b60006123378383612aa3565b610fff8133612acd565b61260f8282611813565b610fe85760008281526002602090815260408083206001600160a01b03851684529091529020805460ff191660011790556126473390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6126958282611813565b15610fe85760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6126fa612b26565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080808061275c866001600160a01b038716612b6f565b9097909650945050505050565b60015460ff16156127af5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610bea565b565b6000612337836001600160a01b038416612ba9565b604080517f555de473c0691dad2578fac0f47ae8a743879daacb183338392f580610fa666460208201526001600160a01b0385169181019190915260608101839052600090819061282f9060800160405160208183030381529060405280519060200120612bf8565b9050600061283d8285612c25565b90506128697f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca4082611813565b9695505050505050565b61287b612769565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612727565b606060ff83146128c1576125c683612c41565b8180546128cd90613c0d565b80601f01602080910402602001604051908101604052809291908181526020018280546128f990613c0d565b80156129465780601f1061291b57610100808354040283529160200191612946565b820191906000526020600020905b81548152906001019060200180831161292957829003601f168201915b50505050509050610b8e565b6002600054036129a45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bea565b6002600055565b60006129c1846001600160a01b03851684612c80565b949350505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052612a23908590612c9d565b50505050565b6001600160a01b03811660009081526001830160205260408120541515612337565b6000610b8e82612d72565b600080808061275c8686612d7d565b600080829050601f81511115612a90578260405163305a27a960e01b8152600401610bea9190613d55565b8051612a9b82613d68565b179392505050565b6000826000018281548110612aba57612aba613a89565b9060005260206000200154905092915050565b612ad78282611813565b610fe857612ae481612da8565b612aef836020612dba565b604051602001612b00929190613d8c565b60408051601f198184030181529082905262461bcd60e51b8252610bea91600401613d55565b60015460ff166127af5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610bea565b6000818152600283016020526040812054819080612b9e57612b918585612f56565b9250600091506125aa9050565b6001925090506125aa565b6000818152600183016020526040812054612bf057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b8e565b506000610b8e565b6000610b8e612c05612f62565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612c34858561308d565b91509150610e00816130cf565b60606000612c4e83613219565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600082815260028401602052604081208290556129c18484613241565b6000612cf2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661324d9092919063ffffffff16565b9050805160001480612d13575080806020019051810190612d139190613e01565b610f0c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bea565b6000610b8e826125e5565b60008080612d8b85856125ef565b600081815260029690960160205260409095205494959350505050565b6060610b8e6001600160a01b03831660145b60606000612dc9836002613a35565b612dd4906002613b14565b67ffffffffffffffff811115612dec57612dec6135cb565b6040519080825280601f01601f191660200182016040528015612e16576020820181803683370190505b509050600360fc1b81600081518110612e3157612e31613a89565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612e6057612e60613a89565b60200101906001600160f81b031916908160001a9053506000612e84846002613a35565b612e8f906001613b14565b90505b6001811115612f07576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612ec357612ec3613a89565b1a60f81b828281518110612ed957612ed9613a89565b60200101906001600160f81b031916908160001a90535060049490941c93612f0081613e23565b9050612e92565b5083156123375760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610bea565b6000612337838361325c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612fbb57507f000000000000000000000000000000000000000000000000000000000000000046145b15612fe557507f000000000000000000000000000000000000000000000000000000000000000090565b610f69604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008082516041036130c35760208301516040840151606085015160001a6130b787828585613274565b945094505050506125aa565b506000905060026125aa565b60008160048111156130e3576130e3613bf7565b036130eb5750565b60018160048111156130ff576130ff613bf7565b0361314c5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610bea565b600281600481111561316057613160613bf7565b036131ad5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610bea565b60038160048111156131c1576131c1613bf7565b03610fff5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610bea565b600060ff8216601f811115610b8e57604051632cd44ac360e21b815260040160405180910390fd5b60006123378383612ba9565b60606129c18484600085613338565b60008181526001830160205260408120541515612337565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156132ab575060009050600361332f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156132ff573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166133285760006001925092505061332f565b9150600090505b94509492505050565b6060824710156133995760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610bea565b600080866001600160a01b031685876040516133b59190613e3a565b60006040518083038185875af1925050503d80600081146133f2576040519150601f19603f3d011682016040523d82523d6000602084013e6133f7565b606091505b509150915061340887838387613413565b979650505050505050565b6060831561348257825160000361347b576001600160a01b0385163b61347b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bea565b50816129c1565b6129c183838151156134975781518083602001fd5b8060405162461bcd60e51b8152600401610bea9190613d55565b6000602082840312156134c357600080fd5b81356001600160e01b03198116811461233757600080fd5b6000602082840312156134ed57600080fd5b5035919050565b6000806040838503121561350757600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101561354f5781516001600160a01b03168752958201959082019060010161352a565b509495945050505050565b6020815260006123376020830184613516565b80356001600160a01b03811681146112fb57600080fd5b60006020828403121561359657600080fd5b6123378261356d565b600080604083850312156135b257600080fd5b823591506135c26020840161356d565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561360a5761360a6135cb565b604052919050565b6000602080838503121561362557600080fd5b823567ffffffffffffffff8082111561363d57600080fd5b818501915085601f83011261365157600080fd5b813581811115613663576136636135cb565b8060051b91506136748483016135e1565b818152918301840191848101908884111561368e57600080fd5b938501935b838510156136b3576136a48561356d565b82529385019390850190613693565b98975050505050505050565b600082601f8301126136d057600080fd5b813567ffffffffffffffff8111156136ea576136ea6135cb565b6136fd601f8201601f19166020016135e1565b81815284602083860101111561371257600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561374257600080fd5b82359150602083013567ffffffffffffffff81111561376057600080fd5b61376c858286016136bf565b9150509250929050565b60005b83811015613791578181015183820152602001613779565b50506000910152565b600081518084526137b2816020860160208601613776565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b8381101561354f578151875295820195908201906001016137da565b60ff60f81b8816815260e06020820152600061381560e083018961379a565b8281036040840152613827818961379a565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152905061385881856137c6565b9a9950505050505050505050565b60008060006060848603121561387b57600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156138a057600080fd5b6138ac868287016136bf565b9150509250925092565b600080604083850312156138c957600080fd5b6138d28361356d565b946020939093013593505050565b600060c082840312156138f257600080fd5b60405160c0810181811067ffffffffffffffff82111715613915576139156135cb565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b803560ff811681146112fb57600080fd5b6000806040838503121561397e57600080fd5b6139878361395a565b91506135c26020840161395a565b6000806000606084860312156139aa57600080fd5b6139b38461395a565b92506139c16020850161395a565b91506139cf6040850161395a565b90509250925092565b6040815260006139eb6040830185613516565b82810360208401526139fd81856137c6565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b60ff8181168382160190811115610b8e57610b8e613a06565b6000816000190483118215151615613a4f57613a4f613a06565b500290565b600082613a7157634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610b8e57610b8e613a06565b634e487b7160e01b600052603260045260246000fd5b600060018201613ab157613ab1613a06565b5060010190565b60208082526023908201527f50726f6a65637453616c653a20616464726573732063616e6e6f74206265207a60408201526265726f60e81b606082015260800190565b600060208284031215613b0d57600080fd5b5051919050565b80820180821115610b8e57610b8e613a06565b60208082526021908201527f50726f6a65637453616c6550726f3a207369676e6174757265206578706972656040820152601960fa1b606082015260800190565b60208082526021908201527f50726f6a65637453616c6550726f3a20496e76616c6964207369676e617475726040820152606560f81b606082015260800190565b6020808252602e908201527f50726f6a65637453616c653a20616d6f756e742065786365656473206465706f60408201526d1cda5d18589b1948185b5bdd5b9d60921b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b600181811c90821680613c2157607f821691505b602082108103613c4157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610f0c57600081815260208120601f850160051c81016020861015613c6e5750805b601f850160051c820191505b81811015613c8d57828155600101613c7a565b505050505050565b815167ffffffffffffffff811115613caf57613caf6135cb565b613cc381613cbd8454613c0d565b84613c47565b602080601f831160018114613cf85760008415613ce05750858301515b600019600386901b1c1916600185901b178555613c8d565b600085815260208120601f198616915b82811015613d2757888601518255948401946001909101908401613d08565b5085821015613d455787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000612337602083018461379a565b80516020808301519190811015613c415760001960209190910360031b1b16919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613dc4816017850160208801613776565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613df5816028840160208801613776565b01602801949350505050565b600060208284031215613e1357600080fd5b8151801515811461233757600080fd5b600081613e3257613e32613a06565b506000190190565b60008251613e4c818460208701613776565b919091019291505056fea2646970667358221220d2b0882e056d9591064cf2a1d8c13debdee3fc3c4d7c0a131cfebe77e6b9b55c64736f6c634300081000330000000000000000000000000000000000000000000000000000000068555b5000000000000000000000000000000000000000000000000000000000686138d0000000000000000000000000000000000000000000000000000000006863dbd00000000000000000000000000000000000000000000000000000000068652d500000000000000000000000000000000000000000000000000000000068653b600000000000000000000000000000000000000000000000000000000068659dd0000000000000000000000000d16fa1f6b74636d271130859b73a75703fccedc300000000000000000000000055d398326f99059ff775485246999027b3197955000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000001a784379d99db42000000000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000005402e8523a99c97275a96a11d8d69b824ea9c89d0000000000000000000000005402e8523a99c97275a96a11d8d69b824ea9c89d000000000000000000000000a8a15ec4d496521d3a4b70e3cc2c15ff1701e3be