0 txs
488 calls
constructor
constructor((address owner, uint32 saleStart, uint32 saleEnd, uint32 totalUsers, uint8 noOfTiers, uint8 phaseNo, address withdrawer, address paymentToken, uint256 maxCap, string name) setUp_)
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
DEFAULT_WITHDRAW_ROLE
viewfunction DEFAULT_WITHDRAW_ROLE() view returns (bytes32)
getRefundPeriod
viewfunction getRefundPeriod() view returns (uint256 start, uint256 end)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getSetUp
viewfunction getSetUp() view returns (tuple)
getTierDetails
viewfunction getTierDetails(uint256 tier) view returns (tuple)
getTotalBUSDReceivedInAllTier
viewfunction getTotalBUSDReceivedInAllTier() view returns (uint256)
getUserDetails
viewfunction getUserDetails(address user) view returns (tuple)
getUserRefundEligibility
viewfunction getUserRefundEligibility(address user) view returns (bool)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isCrosschainIDO
viewfunction isCrosschainIDO() view returns (bool, address refundCaller)
paused
viewfunction paused() view returns (bool)
rootHash
viewfunction rootHash() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
verify
viewfunction verify(address _wallet, uint256 _tier, bytes32[] proof, bytes32 _rootHash) view returns (bool)
autoRefund
nonpayablefunction autoRefund(address user)
buyTokens
nonpayablefunction buyTokens(uint256 amount, uint256 userTier, bytes32[] proof) returns (bool)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setRefundCaller
nonpayablefunction setRefundCaller(address _setRefundCaller)
setRefundPeriod
payablefunction setRefundPeriod(uint256 _refundStart, uint256 _refundEnd) payable
unpause
nonpayablefunction unpause()
updateEndTime
nonpayablefunction updateEndTime(uint256 newSaleEnd)
updateHash
nonpayablefunction updateHash(bytes32 _hash)
updateMaxCap
nonpayablefunction updateMaxCap(uint256 _maxCap)
updateStartTime
nonpayablefunction updateStartTime(uint256 newsaleStart)
updateTiers
nonpayablefunction updateTiers(uint256[] _tier, uint256[] _maxTierCap, uint256[] _minUserCap, uint256[] _maxUserCap, uint256[] _tierUsers)
withdrawFunds
nonpayablefunction withdrawFunds(address token, address to, uint256 amount)
events
DestinationChainUpdated
event DestinationChainUpdated(uint16 indexed oldChainId, uint16 indexed newChainId)
FundsWithdrawn
event FundsWithdrawn(address token, address to, uint256 amount)
LinearVestingSet
event LinearVestingSet(address indexed linearVesting)
Paused
event Paused(address account)
RefundEnabled
event RefundEnabled(bool enabled)
RefundPeriodSet
event RefundPeriodSet(uint256 start, uint256 end)
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)
UserInvestment
event UserInvestment(address indexed user, uint256 amount, uint8 indexed phase)
UserRefund
event UserRefund(address indexed user, uint256 amount)
errors
AlreadyRefunded
error AlreadyRefunded()
AmountGreaterThanTierMaxCap
error AmountGreaterThanTierMaxCap()
AmountGreaterThanUserMaxCap
error AmountGreaterThanUserMaxCap()
AmountLessThanUserMinCap
error AmountLessThanUserMinCap()
AmountMustBeGreaterThanZero
error AmountMustBeGreaterThanZero()
CrosschainIDO
error CrosschainIDO()
ExceedsPoolMaxCap
error ExceedsPoolMaxCap()
InsufficientAllowance
error InsufficientAllowance()
InsufficientFunds
error InsufficientFunds()
InvalidMaxTierCap
error InvalidMaxTierCap()
InvalidMaxUserCap
error InvalidMaxUserCap()
InvalidRefundPeriod
error InvalidRefundPeriod()
InvalidSaleEnd
error InvalidSaleEnd()
InvalidTierNumber
error InvalidTierNumber()
InvalidTimings
error InvalidTimings()
LengthsMismatch
error LengthsMismatch()
LinearVestingNotSet
error LinearVestingNotSet()
NoInvestmentFound
error NoInvestmentFound()
RefundPeriodNotActive
error RefundPeriodNotActive()
SaleAlreadyStarted
error SaleAlreadyStarted()
SaleEnded
error SaleEnded()
SaleNotStarted
error SaleNotStarted()
TokensAlreadyClaimed
error TokensAlreadyClaimed()
UnknownRefundCaller
error UnknownRefundCaller(address caller)
UserNotAuthenticated
error UserNotAuthenticated()
UserNotWhitelisted
error UserNotWhitelisted()
ZeroLinearVesting
error ZeroLinearVesting()
ZeroMaxCap
error ZeroMaxCap()
ZeroOwnerAddress
error ZeroOwnerAddress()
ZeroTiers
error ZeroTiers()
ZeroTokenAddress
error ZeroTokenAddress()
ZeroUsers
error ZeroUsers()
ZeroUsersInTier
error ZeroUsersInTier()
ZeroWithdrawerAddress
error ZeroWithdrawerAddress()
creation bytecode
0x60806040523480156200001157600080fd5b5060405162003f8138038062003f8183398101604081905262000034916200058a565b6002805460ff19169055600160035580806200005081620001b3565b8051620000609060009062000306565b620000967f1547499c2288cebb90734de086df09542bec08d95a68d8b95edd1ecc68f742508260c001516200030660201b60201c565b807f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa314815181546020840151604085015160608601516001600160a01b039485166001600160c01b031990941693909317600160a01b63ffffffff93841602176001600160c01b0316600160c01b918316919091026001600160e01b031617600160e01b9190921602178255608083015160018301805460a086015160c087015160ff94851661ffff19909316929092176101009490911684021762010000600160b01b031916620100009185169190910217905560e08401516002840180546001600160a01b031916919093161790915582015160038201556101208201516004820190620001a6908262000736565b5090505050505062000802565b806101000151600003620001da5760405163d06a5aaf60e01b815260040160405180910390fd5b4263ffffffff16816020015163ffffffff161115806200020e5750806020015163ffffffff16816040015163ffffffff1611155b156200022d5760405163c6e369f960e01b815260040160405180910390fd5b806080015160ff166000036200025657604051635bff5e3360e11b815260040160405180910390fd5b60e08101516001600160a01b03166200028257604051636b093aad60e01b815260040160405180910390fd5b806060015163ffffffff16600003620002ae576040516332b43d2b60e11b815260040160405180910390fd5b80516001600160a01b0316620002d7576040516342cad95760e01b815260040160405180910390fd5b60c08101516001600160a01b0316620003035760405163681604b960e11b815260040160405180910390fd5b50565b62000312828262000331565b60008281526001602052604090206200032c9082620003d2565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620003ce576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200038d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620003e9836001600160a01b038416620003f2565b90505b92915050565b60008181526001830160205260408120546200043b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620003ec565b506000620003ec565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b038111828210171562000480576200048062000444565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620004b157620004b162000444565b604052919050565b80516001600160a01b0381168114620004d157600080fd5b919050565b805163ffffffff81168114620004d157600080fd5b805160ff81168114620004d157600080fd5b600082601f8301126200050f57600080fd5b81516001600160401b038111156200052b576200052b62000444565b602062000541601f8301601f1916820162000486565b82815285828487010111156200055657600080fd5b60005b838110156200057657858101830151828201840152820162000559565b506000928101909101919091529392505050565b6000602082840312156200059d57600080fd5b81516001600160401b0380821115620005b557600080fd5b908301906101408286031215620005cb57600080fd5b620005d56200045a565b620005e083620004b9565b8152620005f060208401620004d6565b60208201526200060360408401620004d6565b60408201526200061660608401620004d6565b60608201526200062960808401620004eb565b60808201526200063c60a08401620004eb565b60a08201526200064f60c08401620004b9565b60c08201526200066260e08401620004b9565b60e0820152610100838101519082015261012080840151838111156200068757600080fd5b6200069588828701620004fd565b918301919091525095945050505050565b600181811c90821680620006bb57607f821691505b602082108103620006dc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200032c576000816000526020600020601f850160051c810160208610156200070d5750805b601f850160051c820191505b818110156200072e5782815560010162000719565b505050505050565b81516001600160401b0381111562000752576200075262000444565b6200076a81620007638454620006a6565b84620006e2565b602080601f831160018114620007a25760008415620007895750858301515b600019600386901b1c1916600185901b1785556200072e565b600085815260208120601f198616915b82811015620007d357888601518255948401946001909101908401620007b2565b5085821015620007f25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61376f80620008126000396000f3fe6080604052600436106101e35760003560e01c80638456cb5911610102578063ca15c87311610095578063dafc4c2a11610064578063dafc4c2a14610781578063de5b182a14610794578063e81ba080146107f6578063fa92ceca1461081657600080fd5b8063ca15c873146105f8578063cc3d967b14610618578063cd5fdb231461073f578063d547741f1461076157600080fd5b8063944964cf116100d1578063944964cf146105195780639c0001851461057b5780639ecad168146105af578063a217fddf146105e357600080fd5b80638456cb591461044e578063845c596c146104635780639010d07c1461048357806391d14854146104c857600080fd5b80633dee1a781161017a5780635647cb14116101495780635647cb14146103a25780635c975abb146103f657806362dd5f381461040e5780636ab3846b1461042e57600080fd5b80633dee1a781461032d5780633f4ba83a1461034d578063438114d0146103625780634bc14a561461038257600080fd5b8063248a9ca3116101b6578063248a9ca31461029d5780632f2ff15d146102cd57806336568abe146102ed5780633af98d391461030d57600080fd5b806301ffc9a7146101e857806306bcf02f1461021d5780631c20fadd1461023f5780631d80009a1461025f575b600080fd5b3480156101f457600080fd5b50610208610203366004612fbd565b610836565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612fff565b610892565b005b34801561024b57600080fd5b5061023d61025a366004613041565b610965565b34801561026b57600080fd5b507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31c545b604051908152602001610214565b3480156102a957600080fd5b5061028f6102b8366004612fff565b60009081526020819052604090206001015490565b3480156102d957600080fd5b5061023d6102e836600461307d565b610b25565b3480156102f957600080fd5b5061023d61030836600461307d565b610b4f565b34801561031957600080fd5b506102086103283660046130f5565b610c07565b34801561033957600080fd5b50610208610348366004613148565b610d00565b34801561035957600080fd5b5061023d610ef3565b34801561036e57600080fd5b5061023d61037d366004612fff565b610f09565b34801561038e57600080fd5b5061020861039d366004613163565b610f39565b3480156103ae57600080fd5b507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31b546040805163ffffffff8084168252640100000000909304909216602083015201610214565b34801561040257600080fd5b5060025460ff16610208565b34801561041a57600080fd5b5061023d6104293660046132a5565b610fc4565b34801561043a57600080fd5b5061023d610449366004612fff565b611303565b34801561045a57600080fd5b5061023d6113e7565b34801561046f57600080fd5b5061023d61047e366004613148565b6113fa565b34801561048f57600080fd5b506104a361049e366004613377565b61154a565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610214565b3480156104d457600080fd5b506102086104e336600461307d565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561052557600080fd5b50610539610534366004612fff565b611569565b6040516102149190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b34801561058757600080fd5b507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31a5461028f565b3480156105bb57600080fd5b5061028f7f1547499c2288cebb90734de086df09542bec08d95a68d8b95edd1ecc68f7425081565b3480156105ef57600080fd5b5061028f600081565b34801561060457600080fd5b5061028f610613366004612fff565b611609565b34801561062457600080fd5b506106fa610633366004613148565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684527f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31e8252928290208251938401835280548452600101547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116918401919091527f0100000000000000000000000000000000000000000000000000000000000000900460ff1615159082015290565b60408051825181526020808401517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169082015291810151151590820152606001610214565b34801561074b57600080fd5b50610754611620565b6040516102149190613407565b34801561076d57600080fd5b5061023d61077c36600461307d565b611811565b61023d61078f366004613377565b611836565b3480156107a057600080fd5b507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa319546040805160ff83161515815261010090920473ffffffffffffffffffffffffffffffffffffffff16602083015201610214565b34801561080257600080fd5b5061023d610811366004612fff565b611961565b34801561082257600080fd5b5061023d610831366004613148565b6119cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061088c575061088c826119ff565b92915050565b600061089d81611a96565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa314805474010000000000000000000000000000000000000000900463ffffffff164210610916576040517f522cb3fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805463ffffffff90931674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff9093169290921790915550565b7f1547499c2288cebb90734de086df09542bec08d95a68d8b95edd1ecc68f7425061098f81611a96565b610997611aa0565b816000036109d1576040517f5e85ae7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528490839073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6391906134fc565b1015610a9b576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610abc73ffffffffffffffffffffffffffffffffffffffff82168585611b13565b6040805173ffffffffffffffffffffffffffffffffffffffff8088168252861660208201529081018490527fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060600160405180910390a150610b1f6001600355565b50505050565b600082815260208190526040902060010154610b4081611a96565b610b4a8383611be7565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610bf9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610c038282611c09565b5050565b6000610c11611c2b565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa314610c3b81611c9a565b610c4781868686611d50565b610c518187611de1565b336000908152600a82016020526040812054610c6d9088613544565b9050610c7a828288611e2e565b610c8682888884611ef5565b6002820154610cad9073ffffffffffffffffffffffffffffffffffffffff1633308a611fa4565b600182015460405182815261010090910460ff169033907fa6c963db73174350c08b882c2b6c89902dccdfdb463a6f6fe06659a0320b7a339060200160405180910390a36001925050505b949350505050565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa319546000907f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31490829060ff16158015610d7757506005820154610100900473ffffffffffffffffffffffffffffffffffffffff1615155b15610e1c5760058201546040517ff0a3563c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526000926101009004169063f0a3563c90602401602060405180830381865afa158015610df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1891906134fc565b1190505b600782015460009063ffffffff164210801590610e4b57506007830154640100000000900463ffffffff164211155b73ffffffffffffffffffffffffffffffffffffffff86166000908152600a850160205260408120549192509015801590610ed3575073ffffffffffffffffffffffffffffffffffffffff86166000908152600a850160205260409020600101547f0100000000000000000000000000000000000000000000000000000000000000900460ff16155b8015610edd575082155b9050818015610ee95750805b9695505050505050565b6000610efe81611a96565b610f06612002565b50565b6000610f1481611a96565b507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31c55565b6000610ee9848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805173ffffffffffffffffffffffffffffffffffffffff8c1660208201529081018a905246606082015230608082015286925060a00190506040516020818303038152906040528051906020012061207f565b6000610fcf81611a96565b84518651141580610fe257508351855114155b80610fef57508251845114155b80610ffc57508151835114155b15611033576040517f586cb9e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b86518110156112fa5786818151811061105157611051613557565b6020026020010151600014806110a857507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31554875160ff9091169088908390811061109e5761109e613557565b6020026020010151115b156110df576040517fd7ee10e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8581815181106110f1576110f1613557565b6020026020010151600003611132576040517f4e71b03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83818151811061114457611144613557565b6020026020010151600003611185576040517f5a7aa02000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82818151811061119757611197613557565b60200260200101516000036111d8576040517fa5958dad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060a001604052808783815181106111f5576111f5613557565b6020026020010151815260200186838151811061121457611214613557565b6020026020010151815260200185838151811061123357611233613557565b602002602001015181526020016000815260200184838151811061125957611259613557565b602002602001015181525061128b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31490565b60090160008984815181106112a2576112a2613557565b6020026020010151815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508080600101915050611036565b50505050505050565b600061130e81611a96565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa314805474010000000000000000000000000000000000000000900463ffffffff168311158061135d5750428311155b15611394576040517f8078acb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805463ffffffff9093167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff9093169290921790915550565b60006113f281611a96565b610f06612095565b600061140581611a96565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa319547f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa3149060ff1615611483576040517fd9a05c4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166114d0576040517ff73706ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005810180547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8616908102919091179091556040517f8fd8ed5c19590ad7762b6aa12ddfd32ccf0d6ec5bf6d79b6d95be33e8bcceea290600090a2505050565b600082815260016020526040812061156290836120f0565b9392505050565b61159b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b5060009081527f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31d6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b600081815260016020526040812061088c906120fc565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018390526101008201929092526101208101919091527f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa3146040805161014081018252825473ffffffffffffffffffffffffffffffffffffffff808216835263ffffffff74010000000000000000000000000000000000000000830481166020850152780100000000000000000000000000000000000000000000000083048116948401949094527c01000000000000000000000000000000000000000000000000000000009091049092166060820152600183015460ff808216608084015261010080830490911660a084015262010000909104831660c0830152600284015490921660e08201526003830154918101919091526004820180549192916101208401919061178a90613586565b80601f01602080910402602001604051908101604052809291908181526020018280546117b690613586565b80156118035780601f106117d857610100808354040283529160200191611803565b820191906000526020600020905b8154815290600101906020018083116117e657829003601f168201915b505050505081525050905090565b60008281526020819052604090206001015461182c81611a96565b610b4a8383611c09565b600061184181611a96565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa319547f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa3149060ff16156118bf576040517fd9a05c4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118ca818585612106565b60058101546040517fdafc4c2a000000000000000000000000000000000000000000000000000000008152600481018690526024810185905261010090910473ffffffffffffffffffffffffffffffffffffffff169063dafc4c2a90604401600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b5050505050505050565b600061196c81611a96565b816000036119a6576040517fd06a5aaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31755565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa3146119f5816121c7565b610c038183612287565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061088c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461088c565b610f06813361233f565b600260035403611b0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bf0565b6002600355565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610b4a9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526123f7565b611bf18282612506565b6000828152600160205260409020610b4a90826125f6565b611c138282612618565b6000828152600160205260409020610b4a90826126cf565b60025460ff1615611c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bf0565b565b805474010000000000000000000000000000000000000000900463ffffffff16421015611cf3576040517f2d0a346e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547801000000000000000000000000000000000000000000000000900463ffffffff16421115610f06576040517f0bd8a3eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b821580611d635750600184015460ff1683115b15611d9a576040517f2ba75b2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611dab338484848860080154610f39565b610b1f576040517f5fc5fa7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546006830154611df6908390613544565b1115610c03576040517ffd0ec42100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260098401602052604090206001810154831015611e7c576040517fe8e3beb000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020154831115611eba576040517f9534a42900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054831115610b1f576040517fe282fe1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82846006016000828254611f099190613544565b9091555050600082815260098501602052604081206003018054859290611f31908490613544565b9091555050336000908152600a90940160205260409093206001810180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093167fff00000000000000000000000000000000000000000000000000000000000000909316929092179091559190915550565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610b1f9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611b65565b61200a6126f1565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60008261208c858461275d565b14949350505050565b61209d611c2b565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586120553390565b600061156283836127a0565b600061088c825490565b80821061213f576040517f69ded2d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078301805463ffffffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909216908516171790556040517f20cdd2cc77e4b4b71fea0119ae3f943a89372ba5193c37be096c4965fee9cc23906121ba9084908490918252602082015260400190565b60405180910390a1505050565b600581015460ff16156121d75750565b6005810154610100900473ffffffffffffffffffffffffffffffffffffffff1661222d576040517f6743c12700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005810154610100900473ffffffffffffffffffffffffffffffffffffffff163314610f06576040517f2654f914000000000000000000000000000000000000000000000000000000008152336004820152602401610bf0565b61229182826127ca565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a830160205260409020546122c48383836128b2565b60028301546122ea9073ffffffffffffffffffffffffffffffffffffffff168383611b13565b8173ffffffffffffffffffffffffffffffffffffffff167f2aa1a3127b897e6b1805a2208c9b1892bf77f9071ea6e08a3b763af5b68535178260405161233291815260200190565b60405180910390a2505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c035761237d816129e3565b612388836020612a02565b6040516020016123999291906135d9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610bf09160040161365a565b6000612459826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612c459092919063ffffffff16565b905080516000148061247a57508080602001905181019061247a919061366d565b610b4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610bf0565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c035760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556125983390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006115628373ffffffffffffffffffffffffffffffffffffffff8416612c54565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610c035760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006115628373ffffffffffffffffffffffffffffffffffffffff8416612ca3565b60025460ff16611c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610bf0565b600081815b84518110156127985761278e8286838151811061278157612781613557565b6020026020010151612d96565b9150600101612762565b509392505050565b60008260000182815481106127b7576127b7613557565b9060005260206000200154905092915050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a83016020526040812054900361282a576040517fb72d21a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a830160205260409020600101547f0100000000000000000000000000000000000000000000000000000000000000900460ff1615610c03576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a84016020526040902060010180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0100000000000000000000000000000000000000000000000000000000000000179055600683015461293390829061368f565b600684015573ffffffffffffffffffffffffffffffffffffffff82166000908152600a840160209081526040808320600101547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1680845260098701909252909120600301546129a390839061368f565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116600090815260099094016020526040909320600301929092555050565b606061088c73ffffffffffffffffffffffffffffffffffffffff831660145b60606000612a118360026136a2565b612a1c906002613544565b67ffffffffffffffff811115612a3457612a346131c5565b6040519080825280601f01601f191660200182016040528015612a5e576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612a9557612a95613557565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612af857612af8613557565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612b348460026136a2565b612b3f906001613544565b90505b6001811115612bdc577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612b8057612b80613557565b1a60f81b828281518110612b9657612b96613557565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93612bd5816136b9565b9050612b42565b508315611562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610bf0565b6060610cf88484600085612dc5565b6000818152600183016020526040812054612c9b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561088c565b50600061088c565b60008181526001830160205260408120548015612d8c576000612cc760018361368f565b8554909150600090612cdb9060019061368f565b9050818114612d40576000866000018281548110612cfb57612cfb613557565b9060005260206000200154905080876000018481548110612d1e57612d1e613557565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612d5157612d516136ee565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061088c565b600091505061088c565b6000818310612db2576000828152602084905260409020611562565b6000838152602083905260409020611562565b606082471015612e57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610bf0565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612e80919061371d565b60006040518083038185875af1925050503d8060008114612ebd576040519150601f19603f3d011682016040523d82523d6000602084013e612ec2565b606091505b5091509150612ed387838387612ede565b979650505050505050565b60608315612f74578251600003612f6d5773ffffffffffffffffffffffffffffffffffffffff85163b612f6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bf0565b5081610cf8565b610cf88383815115612f895781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf0919061365a565b600060208284031215612fcf57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461156257600080fd5b60006020828403121561301157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461303c57600080fd5b919050565b60008060006060848603121561305657600080fd5b61305f84613018565b925061306d60208501613018565b9150604084013590509250925092565b6000806040838503121561309057600080fd5b823591506130a060208401613018565b90509250929050565b60008083601f8401126130bb57600080fd5b50813567ffffffffffffffff8111156130d357600080fd5b6020830191508360208260051b85010111156130ee57600080fd5b9250929050565b6000806000806060858703121561310b57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561313057600080fd5b61313c878288016130a9565b95989497509550505050565b60006020828403121561315a57600080fd5b61156282613018565b60008060008060006080868803121561317b57600080fd5b61318486613018565b945060208601359350604086013567ffffffffffffffff8111156131a757600080fd5b6131b3888289016130a9565b96999598509660600135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261320557600080fd5b8135602067ffffffffffffffff80831115613222576132226131c5565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108482111715613265576132656131c5565b604052938452602081870181019490810192508785111561328557600080fd5b6020870191505b84821015612ed35781358352918301919083019061328c565b600080600080600060a086880312156132bd57600080fd5b853567ffffffffffffffff808211156132d557600080fd5b6132e189838a016131f4565b965060208801359150808211156132f757600080fd5b61330389838a016131f4565b9550604088013591508082111561331957600080fd5b61332589838a016131f4565b9450606088013591508082111561333b57600080fd5b61334789838a016131f4565b9350608088013591508082111561335d57600080fd5b5061336a888289016131f4565b9150509295509295909350565b6000806040838503121561338a57600080fd5b50508035926020909101359150565b60005b838110156133b457818101518382015260200161339c565b50506000910152565b600081518084526133d5816020860160208601613399565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815261342e60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b60006020830151613447604084018263ffffffff169052565b50604083015163ffffffff8116606084015250606083015163ffffffff8116608084015250608083015160ff811660a08401525060a083015160ff811660c08401525060c083015173ffffffffffffffffffffffffffffffffffffffff811660e08401525060e08301516101006134d58185018373ffffffffffffffffffffffffffffffffffffffff169052565b84015161012084810191909152840151610140808501529050610cf86101608401826133bd565b60006020828403121561350e57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561088c5761088c613515565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c9082168061359a57607f821691505b6020821081036135d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613611816017850160208801613399565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161364e816028840160208801613399565b01602801949350505050565b60208152600061156260208301846133bd565b60006020828403121561367f57600080fd5b8151801515811461156257600080fd5b8181038181111561088c5761088c613515565b808202811582820484141761088c5761088c613515565b6000816136c8576136c8613515565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000825161372f818460208701613399565b919091019291505056fea264697066735822122035e2b5ec48c8837f965aa19aa75fe868299b43f2cf0f0de0dee7ceae29aba46164736f6c634300081700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000b44889a0da462090922f72d7faf69bceb3adb7c60000000000000000000000000000000000000000000000000000000068b598d00000000000000000000000000000000000000000000000000000000068b6ea50000000000000000000000000000000000000000000000000000000000000034900000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b44889a0da462090922f72d7faf69bceb3adb7c600000000000000000000000055d398326f99059ff775485246999027b31979550000000000000000000000000000000000000000000034f086f3b33b68400000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000154e65774572615f5075626c69635f50686173655f310000000000000000000000