0 txs
10 calls
constructor
No constructor.
functions
booster
viewfunction booster(uint128) view returns (uint128 start, uint128 end, uint256 fee_d2, uint256 tokenAchieved)
boosterProgress
viewfunction boosterProgress() view returns (uint128 running)
calcUserAllocation
viewfunction calcUserAllocation(address _user, uint128 _boosterRunning) view returns (uint256 userAlloc)
candidates
viewfunction candidates(uint256) view returns (address)
candidatesLength
viewfunction candidatesLength() view returns (uint256)
chainInvoices
viewfunction chainInvoices(uint240, address, uint256) view returns (uint256 userIndex, uint128 boosterId, uint128 boughtAt, uint256 received, uint256 bought, uint256 charged)
chainRaised
viewfunction chainRaised(uint240) view returns (uint256)
chainRevenue
viewfunction chainRevenue(uint240) view returns (uint256)
chainSold
viewfunction chainSold(uint240) view returns (uint256)
chainUserInvoicesLength
viewfunction chainUserInvoicesLength(uint240 _chainID, address _user) view returns (uint256 chainUserInvoicesLengthNumber)
chainUserPurchasedPerRound
viewfunction chainUserPurchasedPerRound(uint240, address, uint128) view returns (uint256)
chainUsers
viewfunction chainUsers(uint240, uint256) view returns (address)
chainUsersLength
viewfunction chainUsersLength(uint240 _chainID) view returns (uint256 chainUsersLengthNumber)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
factory
viewfunction factory() view returns (address)
feeMoved
viewfunction feeMoved() view returns (uint256)
isChainUser
viewfunction isChainUser(uint240, address) view returns (bool)
isClaimExecuted
viewfunction isClaimExecuted(uint256, bytes) view returns (bool)
isVoteValid
viewfunction isVoteValid(address) view returns (bool)
message
viewfunction message() view returns (string)
minMaxCom
viewfunction minMaxCom() view returns (uint256 min, uint256 max)
minMaxFcfs
viewfunction minMaxFcfs() view returns (uint256 min, uint256 max)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
payload
viewfunction payload(uint240 _chainID) view returns (bytes payloadValue)
payment
viewfunction payment() view returns (address)
platformChainStaked
viewfunction platformChainStaked(uint256, uint240, address) view returns (uint256)
platformNameSalePercentage_d2
viewfunction platformNameSalePercentage_d2(string _platform) view returns (uint256)
platformSalePercentage_d2
viewfunction platformSalePercentage_d2(uint256) view returns (uint256)
platformStakerIndex
viewfunction platformStakerIndex(uint256, address) view returns (uint256)
platformStakerLength
viewfunction platformStakerLength(uint256 _platformIndex) view returns (uint256)
price
viewfunction price() view returns (uint256)
purchasedPerRound
viewfunction purchasedPerRound(address _user, uint128 _boosterRunning) view returns (uint256 purchasedPerRoundNumber)
recipient
viewfunction recipient(address) view returns (string)
remoteUserData
viewfunction remoteUserData(uint240 _chainID, address _user) view returns (uint256 index, uint256 bought, uint256 received, uint256 fee)
remoteUsersLength
viewfunction remoteUsersLength() view returns (uint256 remoteUsersLengthNumber)
sale
viewfunction sale() view returns (uint256)
sold
viewfunction sold() view returns (uint256 total)
totalChainUserPurchased
viewfunction totalChainUserPurchased(address _user) view returns (uint256 totalChainUserPurchasedNumber)
totalPlatformStaked
viewfunction totalPlatformStaked(uint256) view returns (uint256)
totalPlatformUserStaked
viewfunction totalPlatformUserStaked(uint256 _platformIndex, address _staker) view returns (uint256 totalPlatformStakedNumber)
totalRaised
viewfunction totalRaised() view returns (uint256 totalRaisedNumber)
totalRevenue
viewfunction totalRevenue() view returns (uint256 totalRevenueNumber)
totalUsersLength
viewfunction totalUsersLength() view returns (uint256 totalUsersLengthNumber)
userHistoryLength
viewfunction userHistoryLength(address _user) view returns (uint256 userHistoryLengthNumber)
verify
viewfunction verify(address _from, bytes _signature) view returns (bool)
version
viewfunction version() view returns (string)
whitelist
viewfunction whitelist(address) view returns (uint256)
whitelists
viewfunction whitelists(uint256) view returns (address)
whitelistsLength
viewfunction whitelistsLength() view returns (uint256)
whitelistTotalAlloc
viewfunction whitelistTotalAlloc() view returns (uint256)
buyToken
nonpayablefunction buyToken(uint240 _srcChainID, bytes _srcVestingTxHash, uint256 _amountIn, address _user)
config
nonpayablefunction config(uint256 _sale, uint256 _price, uint256[4] _fee_d2, address _payment)
forceMoveFund
nonpayablefunction forceMoveFund()
init
nonpayablefunction init(uint128 _start, uint128 _duration, uint256 _sale, uint256[] _platformPercentage_d2, uint256 _price, uint256[4] _fee_d2, address _payment, string[3] _nameVersionMsg)
migrateCandidates
nonpayablefunction migrateCandidates(address[] _users, bytes[] _signatures)
migrateCandidates2
nonpayablefunction migrateCandidates2(address[] _users)
moveFee
nonpayablefunction moveFee()
moveFund
nonpayablefunction moveFund(uint256 _percent_d2, bool _devAddr, address _target)
resetCandidateChainStaked
nonpayablefunction resetCandidateChainStaked(uint256 _platformIndex, uint240 _chainID, address[] _users)
setCandidateChainStaked
nonpayablefunction setCandidateChainStaked(uint256 _platformIndex, uint240 _chainID, address[] _users, uint256[] _stakedAmount)
setMinMaxCom
nonpayablefunction setMinMaxCom(uint256[2] _minMaxComBuy)
setMinMaxFCFS
nonpayablefunction setMinMaxFCFS(uint256[2] _minMaxFCFSBuy)
setRecipient
nonpayablefunction setRecipient(string _recipient)
setStakers
nonpayablefunction setStakers(uint256 _platformIndex, address[] _users)
setWhitelist_d6
nonpayablefunction setWhitelist_d6(address[] _user, uint256[] _allocation)
teamBuy
nonpayablefunction teamBuy(uint256 _tokenAmount)
togglePause
nonpayablefunction togglePause()
updateStart
nonpayablefunction updateStart(uint128 _start, uint128 _duration)
updateWhitelist_d6
nonpayablefunction updateWhitelist_d6(address[] _user, uint256[] _allocation)
events
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
TokenBought
event TokenBought(uint240 chainID, uint128 booster, address user, uint256 tokenReceived, uint256 buyAmount, uint256 feeCharged)
Unpaused
event Unpaused(address account)
errors
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080604052348015600f57600080fd5b50615ba48061001f6000396000f3fe608060405234801561001057600080fd5b506004361061041d5760003560e01c8063763b414b1161022b578063c630162411610130578063d5c19c29116100b8578063e8a0c65011610087578063e8a0c65014610a81578063f1b1486a14610aa1578063f3d790fb14610ab4578063f6d1011414610abf578063fe4d5add14610adf57600080fd5b8063d5c19c29146109d8578063d5fd944414610a46578063dfb1720314610a59578063e21f37ce14610a7957600080fd5b8063cabc30a6116100ff578063cabc30a61461093e578063cd245e6714610951578063d205de2814610959578063d47bdf2014610979578063d58113aa146109b857600080fd5b8063c6301624146108f0578063c6d0913114610903578063ca37cc671461090b578063ca7800e11461092b57600080fd5b80638da5cb5b116101b3578063b4dd63f111610182578063b4dd63f114610888578063bf2d9e0b146108c5578063c45a0155146108cd578063c4ae3168146108e0578063c5c4744c146108e857600080fd5b80638da5cb5b146108445780639b19251a1461084c578063a035b1fe1461086c578063b3651eea1461087557600080fd5b80638134d8bb116101fa5780638134d8bb146107cf5780638217dd17146107e2578063825c39c8146107f5578063886c6787146108085780638a6111461461081b57600080fd5b8063763b414b1461078e57806376bbcf7b146107a1578063773b7f65146107b4578063795a16e3146107bc57600080fd5b806342f6487a1161033157806354fd4d50116102b95780635c975abb116102885780635c975abb14610706578063605ba5ca1461071e57806365afacb5146107315780636ad1fe021461073957806372c4d7bd1461074257600080fd5b806354fd4d50146106af57806355cae899146106b757806357978a20146106ea5780635aec7423146106f357600080fd5b806349ef05eb1161030057806349ef05eb146106145780634a41d1ac146106455780634a961730146106585780634f538e871461066b578063515535c41461067e57600080fd5b806342f6487a146105ab578063448b7415146105be578063465b0d2c146105de578063488497711461060157600080fd5b80630db5b3ad116103b4578063268cc5ee11610383578063268cc5ee146105365780632746ebe2146105495780633477ee2e14610587578063355d11141461059a5780633644e515146105a257600080fd5b80630db5b3ad146104ba5780630e7fa965146104e5578063166fc4411461051057806317e4e28b1461052357600080fd5b806306b268ec116103f057806306b268ec1461046e57806306fdde031461048157806307db862c146104965780630a5927b9146104b257600080fd5b8063018820d41461042257806302c7e7af1461043757806302cbddc31461045257806305ba013114610465575b600080fd5b610435610430366004614c20565b610af2565b005b61043f610d5d565b6040519081526020015b60405180910390f35b61043f610460366004614c8e565b610daf565b61043f60015481565b61043f61047c366004614cd5565b610efe565b6104896111ac565b6040516104499190614d50565b6005546006545b60408051928352602083019190915201610449565b61043f61123a565b61043f6104c8366004614c8e565b601260209081526000928352604080842090915290825290205481565b6104f86104f3366004614d63565b611367565b6040516001600160a01b039091168152602001610449565b61043561051e366004614d8d565b61139f565b610489610531366004614da9565b6114ed565b610435610544366004614dc4565b611597565b610577610557366004614e0f565b601560209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610449565b6104f8610595366004614e3b565b6116c5565b6104356116ef565b61043f60215481565b600b546104f8906001600160a01b031681565b61043f6105cc366004614da9565b601a6020526000908152604090205481565b6105776105ec366004614e54565b60256020526000908152604090205460ff1681565b61043561060f366004614e71565b6119d6565b61043f610622366004614eb2565b601760209081526000938452604080852082529284528284209052825290205481565b610577610653366004614fa5565b611cc9565b61043f610666366004614e54565b611e93565b610435610679366004614ff4565b611fd8565b61043f61068c36600461501c565b601460209081526000938452604080852082529284528284209052825290205481565b610489612008565b6106ca6106c5366004614e0f565b612015565b604080519485526020850193909352918301526060820152608001610449565b61043f60075481565b61043561070136600461505c565b612168565b600080516020615b4f8339815191525460ff16610577565b61043561072c366004614ff4565b612518565b610435612548565b61043f60005481565b6107556107503660046150b3565b61262d565b604080519687526001600160801b03958616602088015293909416928501929092526060840152608083015260a082015260c001610449565b61043561079c3660046150f2565b61269e565b6104356107af3660046151ec565b6128ea565b60095461043f565b6104356107ca3660046152ba565b612cab565b6104356107dd366004615310565b612d2d565b61043f6107f0366004614e54565b612df7565b610435610803366004615378565b612f6b565b61043f610816366004614cd5565b61346d565b61043f610829366004614da9565b6001600160f01b03166000908152600d602052604090205490565b6104f86135bc565b61043f61085a366004614e54565b60116020526000908152604090205481565b61043f60025481565b610489610883366004614e54565b61362f565b6105776108963660046153e9565b602080805260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b61043f613648565b600a546104f8906001600160a01b031681565b610435613770565b61043f6137a0565b6104356108fe366004614e3b565b6138c8565b61043f613a95565b61043f610919366004614e3b565b60136020526000908152604090205481565b61043561093936600461505c565b613bc8565b61043f61094c366004615419565b613d82565b60085461043f565b610961613e11565b6040516001600160801b039091168152602001610449565b61043f610987366004614e0f565b6001600160f01b0390911660009081526016602090815260408083206001600160a01b039094168352929052205490565b61043f6109c6366004614da9565b60186020526000908152604090205481565b610a1b6109e636600461544e565b600c602052600090815260409020805460018201546002909201546001600160801b0380831693600160801b90930416919084565b604080516001600160801b039586168152949093166020850152918301526060820152608001610449565b610435610a54366004615469565b613ed1565b61043f610a67366004614e3b565b600f6020526000908152604090205481565b610489613f79565b61043f610a8f366004614e3b565b6000908152600e602052604090205490565b610435610aaf36600461505c565b613f86565b60035460045461049d565b61043f610acd366004614da9565b60196020526000908152604090205481565b6104f8610aed366004614e3b565b61412f565b610afa61413f565b610b02614196565b600a54604051633069201960e21b81526001600160f01b03851660048201526000916001600160a01b03169063d18f4b6090829063c1a4806490602401602060405180830381865afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8091906154b2565b6040518263ffffffff1660e01b8152600401610b9e91815260200190565b602060405180830381865afa158015610bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdf91906154b2565b9050806001600160f01b0316846001600160f01b031614610c325760405162461bcd60e51b81526020600482015260086024820152670858da185a5b925160c21b60448201526064015b60405180910390fd5b60005b82811015610d5557610c6d86858584818110610c5357610c536154cb565b9050602002016020810190610c689190614e54565b614208565b1580610cda575060008681526014602090815260408083206001600160f01b0389168452909152812090858584818110610ca957610ca96154cb565b9050602002016020810190610cbe9190614e54565b6001600160a01b03168152602081019190915260400160002054155b610d4d5760008681526014602090815260408083206001600160f01b0389168452909152812090858584818110610d1357610d136154cb565b9050602002016020810190610d289190614e54565b6001600160a01b03166001600160a01b03168152602001908152602001600020600090555b600101610c35565b505050505050565b600060015b6004816001600160801b031611610dab576001600160801b0381166000908152600c6020526040902060020154610d9990836154f7565b9150610da48161550a565b9050610d62565b5090565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663acc0bbf66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2991906154b2565b905060005b81811015610ef657600085815260146020526040808220600a54915163068c7a5b60e51b8152600481018590529092916001600160a01b03169063d18f4b6090602401602060405180830381865afa158015610e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb291906154b2565b6001600160f01b03168152602080820192909252604090810160009081206001600160a01b0388168252909252902054610eec90846154f7565b9250600101610e2e565b505092915050565b60006001600160801b0382161580610f1f57506004826001600160801b0316115b15610f2c575060006111a6565b816001600160801b0316600403610f4657506006546111a6565b600a5460408051634990e42b60e01b815290516000926001600160a01b031691634990e42b9160048083019260209291908290030181865afa158015610f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb491906154b2565b6001600160a01b038516600090815260256020526040812054815492935060ff1691905b838110156111a157856001600160801b031660030361103157610ffb8188614208565b8061101d57506001600160a01b03871660009081526011602052604090205415155b1561102c5760045494506111a1565b611199565b600061103d8289610daf565b600083815260136020908152604080832054600f90925282205492935091906110688683600261427f565b905060008411801561107a5750600083115b80156110835750865b1561119457896001600160801b031660021480156110da57506002600052600c6020527f5d6016397a73f5e079297ac5a36fef17b4d9c3831618e63ab105738020ddd720546001600160801b039081164290911610155b1561112d576001600052600c6020527fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5e54611122908590859061111d9085615535565b6142a8565b985050505050611199565b896001600160801b03166001036111945761115b848461115160075486600261427f565b61111d9085615535565b6001600160a01b038c16600090815260116020526040902054909950801561118a57611187818b6154f7565b99505b5050505050611199565b505050505b600101610fd8565b505050505b92915050565b602280546111b990615548565b80601f01602080910402602001604051908101604052809291908181526020018280546111e590615548565b80156112325780601f1061120757610100808354040283529160200191611232565b820191906000526020600020905b81548152906001019060200180831161121557829003601f168201915b505050505081565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663acc0bbf66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b491906154b2565b905060005b8181101561136257600a5460405163068c7a5b60e51b815260048101839052600d916000916001600160a01b039091169063d18f4b6090602401602060405180830381865afa158015611310573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133491906154b2565b6001600160f01b0316815260208101919091526040016000205461135890846154f7565b92506001016112b9565b505090565b600d602052816000526040600020818154811061138357600080fd5b6000918252602090912001546001600160a01b03169150829050565b6113a761413f565b6113af614196565b60015b806001600160801b03166001036113f6576001600160801b038181166000908152600c6020526040902080546001600160801b031916918516919091179055611465565b600c600061140560018461557c565b6001600160801b03908116825260208201929092526040016000205461143591600160801b90910416600161559b565b6001600160801b038281166000908152600c6020526040902080546001600160801b031916929091169190911790555b6004816001600160801b031610156114cb576001600160801b038082166000908152600c602052604090205461149d9184911661559b565b6001600160801b038281166000908152600c6020526040902080548216600160801b93909216929092021790555b6114d48161550a565b90506004816001600160801b031611156113b257505050565b6060466001600160f01b0316826001600160f01b03160361151c57505060408051600081526020810190915290565b6001600160f01b038216600090815260196020908152604080832054601a8352818420546018845282852054600d8552838620601b8652848720601c8752858820601d8852978690209551611581988b989697959694959394929390929091016155fb565b6040516020818303038152906040529050919050565b61159f61413f565b6115a7614196565b60005b818110156116bf576000848152600e6020526040902054158015906115e057506115e084848484818110610c5357610c536154cb565b6116b7576000848152600e6020908152604080832054601290925282209091858585818110611611576116116154cb565b90506020020160208101906116269190614e54565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600e600085815260200190815260200160002083838381811061166f5761166f6154cb565b90506020020160208101906116849190614e54565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b039092169190911790555b6001016115aa565b50505050565b600981815481106116d557600080fd5b6000918252602090912001546001600160a01b0316905081565b6116f76142b5565b6001600160f01b0346166000908152601a60205260408120546001549091906117209083615535565b905061172b81614394565b6000811161174b5760405162461bcd60e51b8152600401610c29906156b3565b6001829055600a5460408051630520084360e11b81529051611846926001600160a01b031691630a4010869160048083019260209291908290030181865afa15801561179b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bf91906156d0565b61184183600a60009054906101000a90046001600160a01b03166001600160a01b031663256103e56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183a91906154b2565b600261427f565b61443a565b600a546040805163169f23a560e11b8152905161190c926001600160a01b031691632d3e474a9160048083019260209291908290030181865afa158015611891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b591906156d0565b61184183600a60009054906101000a90046001600160a01b03166001600160a01b031663e05a40136040518163ffffffff1660e01b8152600401602060405180830381865afa158015611816573d6000803e3d6000fd5b600a54604080516361d027b360e01b815290516119d2926001600160a01b0316916361d027b39160048083019260209291908290030181865afa158015611957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197b91906156d0565b61184183600a60009054906101000a90046001600160a01b03166001600160a01b03166316aba1516040518163ffffffff1660e01b8152600401602060405180830381865afa158015611816573d6000803e3d6000fd5b5050565b6119de61413f565b6119e6614196565b600a5460408051634990e42b60e01b815290516000926001600160a01b031691634990e42b9160048083019260209291908290030181865afa158015611a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5491906154b2565b90506000816001600160401b03811115611a7057611a70614ef7565b604051908082528060200260200182016040528015611a99578160200160208202803683370190505b5090506000805b83811015611b03576000818152600e602052604090205415801590611ac3575081155b15611acd57600191505b6000818152601360205260409020548351849083908110611af057611af06154cb565b6020908102919091010152600101611aa0565b5080611b3c5760405162461bcd60e51b8152602060048201526008602482015267217374616b65727360c01b6044820152606401610c29565b60005b84811015611c87576000868683818110611b5b57611b5b6154cb565b9050602002016020810190611b709190614e54565b6001600160a01b03811660009081526025602052604090205490915060ff1615611b9a5750611c7f565b60005b85811015611c7c57611baf8183614208565b15611c74576000611bc08284610daf565b905080868381518110611bd557611bd56154cb565b60200260200101818151611be991906154f7565b9052506001600160a01b03831660009081526025602052604090205460ff16611c72576001600160a01b0383166000818152602560205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b03191690911790555b505b600101611b9d565b50505b600101611b3f565b5060005b83811015610d5557828181518110611ca557611ca56154cb565b60209081029190910181015160008381526013909252604090912055600101611c8b565b60008151604114611cdc575060006111a6565b60008060006020850151925060408501519150606085015160001a905060006040518060400160405280886001600160a01b0316815260200160248054611d2290615548565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4e90615548565b8015611d9b5780601f10611d7057610100808354040283529160200191611d9b565b820191906000526020600020905b815481529060010190602001808311611d7e57829003601f168201915b505050505081525090506000602154611db383614451565b60405161190160f01b6020820152602281019290925260428201526062016040516020818303038152906040528051906020012090508260ff16601b14158015611e0157508260ff16601c14155b15611e1457611e11601b846156ed565b92505b60408051600081526020810180835283905260ff85169181019190915260608101869052608081018590526001600160a01b0389169060019060a0016020604051602081039080840390855afa158015611e72573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149550505050505092915050565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663acc0bbf66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0d91906154b2565b905060005b81811015611fd157600a5460405163068c7a5b60e51b8152600481018390526016916000916001600160a01b039091169063d18f4b6090602401602060405180830381865afa158015611f69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8d91906154b2565b6001600160f01b03168152602080820192909252604090810160009081206001600160a01b0388168252909252902054611fc790846154f7565b9250600101611f12565b5050919050565b611fe061413f565b6004611fea613e11565b6001600160801b03161015611fff5780356005555b60200135600655565b602380546111b990615548565b6001600160f01b03821660009081526015602090815260408083206001600160a01b038516845290915281205481908190819060ff1615806120685750466001600160f01b0316866001600160f01b0316145b1561207e5750600092508291508190508061215f565b6001600160f01b0386166000818152601e602090815260408083206001600160a01b038a168452825280832054938352601b9091529020805491955090859081106120cb576120cb6154cb565b90600052602060002001549250601c6000876001600160f01b03166001600160f01b03168152602001908152602001600020848154811061210e5761210e6154cb565b90600052602060002001549150601d6000876001600160f01b03166001600160f01b031681526020019081526020016000208481548110612151576121516154cb565b906000526020600020015490505b92959194509250565b61217061413f565b612178614196565b8281146121b45760405162461bcd60e51b815260206004820152600a6024820152690dad2e6e6d8cadccee8d60b31b6044820152606401610c29565b600a5460408051634990e42b60e01b815290516000926001600160a01b031691634990e42b9160048083019260209291908290030181865afa1580156121fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222291906154b2565b90506000816001600160401b0381111561223e5761223e614ef7565b604051908082528060200260200182016040528015612267578160200160208202803683370190505b5090506000805b838110156122d1576000818152600e602052604090205415801590612291575081155b1561229b57600191505b60008181526013602052604090205483518490839081106122be576122be6154cb565b602090810291909101015260010161226e565b508061230a5760405162461bcd60e51b8152602060048201526008602482015267217374616b65727360c01b6044820152606401610c29565b60005b868110156124cc576000888883818110612329576123296154cb565b905060200201602081019061233e9190614e54565b9050366000888885818110612355576123556154cb565b90506020028101906123679190615706565b6001600160a01b038516600090815260256020526040902054919350915060ff16806123d057506123ce8383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cc992505050565b155b156123dd575050506124c4565b60005b878110156124bf576123f28185614208565b156124b75760006124038286610daf565b905080888381518110612418576124186154cb565b6020026020010181815161242c91906154f7565b9052506001600160a01b03851660009081526025602052604090205460ff166124b5576001600160a01b0385166000818152602560205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b03191690911790555b505b6001016123e0565b505050505b60010161230d565b5060005b8381101561250e578281815181106124ea576124ea6154cb565b602090810291909101810151600083815260139092526040909120556001016124d0565b5050505050505050565b61252061413f565b600361252a613e11565b6001600160801b0316101561253f5780356003555b60200135600455565b6125506142b5565b600a5460408051630520084360e11b8152905161262b926001600160a01b031691630a4010869160048083019260209291908290030181865afa15801561259b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bf91906156d0565b600b546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184191906154b2565b565b6016602052826000526040600020602052816000526040600020818154811061265557600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401549296506001600160801b038083169650600160801b9092049091169350919086565b6126a661413f565b6126ae614196565b600a54604051633069201960e21b81526001600160f01b03871660048201526000916001600160a01b03169063d18f4b6090829063c1a4806490602401602060405180830381865afa158015612708573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272c91906154b2565b6040518263ffffffff1660e01b815260040161274a91815260200190565b602060405180830381865afa158015612767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278b91906154b2565b9050806001600160f01b0316866001600160f01b03161480156127ad57508382145b6127c95760405162461bcd60e51b8152600401610c29906156b3565b60005b8481101561250e576127ea88878784818110610c5357610c536154cb565b158061285e575060008881526014602090815260408083206001600160f01b038b168452909152812081888885818110612826576128266154cb565b905060200201602081019061283b9190614e54565b6001600160a01b03166001600160a01b0316815260200190815260200160002054115b6128e257838382818110612874576128746154cb565b60008b81526014602090815260408083206001600160f01b038e1684528252822092029390930135929091508888858181106128b2576128b26154cb565b90506020020160208101906128c79190614e54565b6001600160a01b031681526020810191909152604001600020555b6001016127cc565b60006128f46144ca565b805490915060ff600160401b82041615906001600160401b031660008115801561291b5750825b90506000826001600160401b031660011480156129375750303b155b905081158015612945575080155b156129635760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561298d57845460ff60401b1916600160401b1785555b6129956144f3565b61299d6144fb565b60015b806001600160801b0316600103612a03578e600c6000836001600160801b03166001600160801b0316815260200190815260200160002060000160006101000a8154816001600160801b0302191690836001600160801b03160217905550612a72565b600c6000612a1260018461557c565b6001600160801b039081168252602082019290925260400160002054612a4291600160801b90910416600161559b565b6001600160801b038281166000908152600c6020526040902080546001600160801b031916929091169190911790555b6004816001600160801b03161015612af9578d600c6000836001600160801b03166001600160801b0316815260200190815260200160002060000160009054906101000a90046001600160801b0316612acb919061559b565b6001600160801b038281166000908152600c6020526040902080548216600160801b93909216929092021790555b88612b0560018361557c565b6001600160801b031660048110612b1e57612b1e6154cb565b602090810291909101516001600160801b0383166000908152600c909252604090912060010155612b4e8161550a565b90506004816001600160801b031611156129a0575060008c81555b6001600160801b0381168b1115612bcd578b8b826001600160801b0316818110612b9557612b956154cb565b90506020020135600f6000836001600160801b031681526020019081526020016000208190555080612bc69061550a565b9050612b69565b600b80546001600160a01b038a166001600160a01b031991821617909155600a80549091163317905560028a9055612c058780615706565b602291612c13919083615793565b50612c216020880188615706565b602391612c2f919083615793565b50612c3d6040880188615706565b602491612c4b919083615793565b50612c5461450b565b508315612c9b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050505050565b612cb36145e6565b6000670de0b6b3a7640000600254612cc9610d5d565b600054612cd69190615535565b612ce09190615852565b612cea9190615869565b118015612cf8575060008151115b612d145760405162461bcd60e51b8152600401610c29906156b3565b3360009081526010602052604090206119d2828261588b565b612d35614617565b612d3d6142b5565b6001600160f01b034616600090815260196020526040812054612d629085600261427f565b9050612d6d81614394565b8215612ded57600a5460408051630520084360e11b81529051612de8926001600160a01b031691630a4010869160048083019260209291908290030181865afa158015612dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de291906156d0565b8261443a565b6116bf565b6116bf828261443a565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663acc0bbf66040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7191906154b2565b905060005b81811015611fd15760015b6004816001600160801b031611612f6257600a5460405163068c7a5b60e51b8152600481018490526017916000916001600160a01b039091169063d18f4b6090602401602060405180830381865afa158015612ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0591906154b2565b6001600160f01b03168152602080820192909252604090810160009081206001600160a01b038916825283528181206001600160801b0385168252909252902054612f5090856154f7565b9350612f5b8161550a565b9050612e81565b50600101612e76565b6000612f75613e11565b90506000816001600160801b031611612fbb5760405162461bcd60e51b815260206004820152600860248201526710b137b7b9ba32b960c11b6044820152606401610c29565b600a546000906001600160a01b031663aa156645336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130389190615949565b905080156130b8576001600160f01b03871660009081526020805260409081902090516130689088908890615966565b9081526040519081900360200190205460ff16156130b35760405162461bcd60e51b8152602060048201526008602482015267195e1958dd5d195960c21b6044820152606401610c29565b6130bf565b4696503392505b60006130cb8885614647565b90508180156130e95750600080516020615b4f8339815191525460ff165b156130f657505050613466565b6130fe6145e6565b600061310a8585610efe565b9050600081116131485760405162461bcd60e51b815260206004820152600960248201526821656c696769626c6560b81b6044820152606401610c29565b6000806131668b8461315c8b600254614776565b8a8a60025461479c565b6001600160a01b0389166000908152601160205260408120549294509092509081036131b8576001600160801b0387166000908152600c60205260409020600101546131b5908490600261427f565b90505b6001600160f01b038c1660008181526016602090815260408083206001600160a01b038d1684528252808320815160c0810183528a81526001600160801b03808e16828601908152428216838601908152606084018b8152608085018d815260a086018c8152875460018181018a55988c528a8c2097516005909102909701968755935192518516600160801b029290941691909117948401949094559251600283015551600382015590516004909101559282526019905290812080548592906132849084906154f7565b90915550506001600160f01b038c166000908152601a6020526040812080548392906132b19084906154f7565b90915550506001600160f01b038c1660009081526017602090815260408083206001600160a01b038c16845282528083206001600160801b038b168452909152812080548492906133039084906154f7565b90915550506001600160801b0387166000908152600c6020526040812060020180548492906133339084906154f7565b909155505085156133fa576001600160f01b038c166000818152601e602090815260408083206001600160a01b038d168452825280832054938352601b909152902080548591908390811061338a5761338a6154cb565b9060005260206000200160008282546133a391906154f7565b90915550506001600160f01b038d166000908152601d602052604090208054839190839081106133d5576133d56154cb565b9060005260206000200160008282546133ee91906154f7565b9091555061341d915050565b61341d883061340984876154f7565b600b546001600160a01b0316929190614973565b7f3a0c16fa96e4422176ee86eb45cbddf6af4d1c252f83f6a5708efc697044397b8c888a85878660405161345696959493929190615976565b60405180910390a1505050505050505b5050505050565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663acc0bbf66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e791906154b2565b905060005b81811015610ef657600a5460405163068c7a5b60e51b8152600481018390526017916000916001600160a01b039091169063d18f4b6090602401602060405180830381865afa158015613543573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061356791906154b2565b6001600160f01b03168152602080820192909252604090810160009081206001600160a01b038916825283528181206001600160801b03881682529092529020546135b290846154f7565b92506001016134ec565b600a5460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015613606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362a91906156d0565b905090565b601060205260009081526040902080546111b990615548565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663acc0bbf66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561369e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c291906154b2565b905060005b8181101561136257600a5460405163068c7a5b60e51b815260048101839052601a916000916001600160a01b039091169063d18f4b6090602401602060405180830381865afa15801561371e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374291906154b2565b6001600160f01b0316815260208101919091526040016000205461376690846154f7565b92506001016136c7565b61377861413f565b600080516020615b4f8339815191525460ff16156137985761262b6149da565b61262b614a3a565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663acc0bbf66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381a91906154b2565b905060005b8181101561136257600a5460405163068c7a5b60e51b8152600481018390526019916000916001600160a01b039091169063d18f4b6090602401602060405180830381865afa158015613876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389a91906154b2565b6001600160f01b031681526020810191909152604001600020546138be90846154f7565b925060010161381f565b6138d06145e6565b6138d86142b5565b60006138e2613e11565b90506002816001600160801b03161161390d5760405162461bcd60e51b8152600401610c29906156b3565b60006139194633614647565b90506000613925610d5d565b6000546139329190615535565b905080841115613940578093505b466001600160f01b0316600081815260166020908152604080832033808552908352818420825160c0810184528881526001600160801b038a8116828701818152428316848801908152606085018f8152608086018b815260a087018c8152885460018082018b55998e528c8e2098516005909102909801978855935192518616600160801b02929095169190911795850195909555935160028401559051600383015591516004909101559484526017835281842090845282528083209383529290529081208054869290613a179084906154f7565b90915550506001600160801b0383166000908152600c602052604081206002018054869290613a479084906154f7565b909155507f3a0c16fa96e4422176ee86eb45cbddf6af4d1c252f83f6a5708efc697044397b905046843387600080604051613a8796959493929190615976565b60405180910390a150505050565b600080600a60009054906101000a90046001600160a01b03166001600160a01b031663acc0bbf66040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0f91906154b2565b905060005b8181101561136257600a5460405163068c7a5b60e51b8152600481018390526000916001600160a01b03169063d18f4b6090602401602060405180830381865afa158015613b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8a91906154b2565b9050468103613b995750613bc0565b6001600160f01b0381166000908152600d6020526040902054613bbc90856154f7565b9350505b600101613b14565b613bd061413f565b613bd8614196565b828114613bf75760405162461bcd60e51b8152600401610c29906156b3565b60075460005b84811015613d785760116000878784818110613c1b57613c1b6154cb565b9050602002016020810190613c309190614e54565b6001600160a01b0316815260208101919091526040016000205415613d7057600060116000888885818110613c6757613c676154cb565b9050602002016020810190613c7c9190614e54565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050613cc4858584818110613cb457613cb46154cb565b9050602002013560066012614a83565b60116000898986818110613cda57613cda6154cb565b9050602002016020810190613cef9190614e54565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060116000888885818110613d2957613d296154cb565b9050602002016020810190613d3e9190614e54565b6001600160a01b03168152602081019190915260400160002054613d628285615535565b613d6c91906154f7565b9250505b600101613bfd565b5060075550505050565b600a54604051630b77067f60e21b815260009182916001600160a01b0390911690632ddc19fc90613db990879087906004016159bb565b602060405180830381865afa158015613dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfa91906154b2565b6000908152600f6020526040902054949350505050565b600060015b6004816001600160801b031611610dab576001600160801b038082166000908152600c602052604090205481164290911610801590613e7a57506001600160801b038082166000908152600c6020526040902054600160801b900481164290911611155b80613eb75750806001600160801b03166004148015613eb757506001600160801b038082166000908152600c602052604090205481164290911610155b15613ec157919050565b613eca8161550a565b9050613e16565b613ed961413f565b613ee1614196565b60008490556002839055600b80546001600160a01b0319166001600160a01b03831617905560015b82613f1560018361557c565b6001600160801b031660048110613f2e57613f2e6154cb565b602090810291909101516001600160801b0383166000908152600c909252604090912060010155613f5e8161550a565b90506004816001600160801b03161115613f09575050505050565b602480546111b990615548565b613f8e61413f565b613f96614196565b828114613fb55760405162461bcd60e51b8152600401610c29906156b3565b60075460005b84811015613d7857600060116000888885818110613fdb57613fdb6154cb565b9050602002016020810190613ff09190614e54565b6001600160a01b03166001600160a01b03168152602001908152602001600020541161412757600886868381811061402a5761402a6154cb565b905060200201602081019061403f9190614e54565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055614086848483818110613cb457613cb46154cb565b6011600088888581811061409c5761409c6154cb565b90506020020160208101906140b19190614e54565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550601160008787848181106140eb576140eb6154cb565b90506020020160208101906141009190614e54565b6001600160a01b0316815260208101919091526040016000205461412490836154f7565b91505b600101613fbb565b600881815481106116d557600080fd5b6141476135bc565b6001600160a01b0316336001600160a01b03161461262b5760405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606401610c29565b6001600052600c6020527fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c546001600160801b03908116429091161061262b5760405162461bcd60e51b81526020600482015260076024820152661cdd185c9d195960ca1b6044820152606401610c29565b6000828152600e60205260408120548103614225575060006111a6565b6000838152600e60209081526040808320601283528184206001600160a01b038716808652935292205482549192918110614262576142626154cb565b6000918252602090912001546001600160a01b0316149392505050565b600061428c826064615ad1565b6142968486615852565b6142a09190615869565b949350505050565b6000826142968386615852565b600a60009054906101000a90046001600160a01b03166001600160a01b031663dfa78bf56040518163ffffffff1660e01b8152600401602060405180830381865afa158015614308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061432c91906156d0565b6001600160a01b0316336001600160a01b03161480614363575061434e6135bc565b6001600160a01b0316336001600160a01b0316145b61262b5760405162461bcd60e51b81526020600482015260026024820152613f3f60f01b6044820152606401610c29565b600b546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156143dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061440091906154b2565b10156144375760405162461bcd60e51b8152600401610c29906020808252600490820152636c65737360e01b604082015260600190565b50565b600b546119d2906001600160a01b03168383614aa5565b80516020808301518051908201206040516000936144ad937fadff17edcd5c0496616b11e8e6581dc02f244b948e281945d5fc27ce62284e5d939192019283526001600160a01b03919091166020830152604082015260600190565b604051602081830303815290604052805190602001209050919050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006111a6565b61262b614adb565b614503614adb565b61262b614b00565b60006022805461451a90615548565b9050118015614537575060006023805461453390615548565b9050115b6145535760405162461bcd60e51b8152600401610c29906156b3565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60226040516145839190615add565b6040518091039020602360405161459a9190615add565b60408051918290038220602083019490945281019190915260608101919091524660808201523060a082015260c00160408051601f198184030181529190528051602090910120602155565b600080516020615b4f8339815191525460ff161561262b5760405163d93c066560e01b815260040160405180910390fd5b600080516020615b4f8339815191525460ff1661262b57604051638dfc202b60e01b815260040160405180910390fd5b6001600160f01b03821660009081526015602090815260408083206001600160a01b038516845290915281205460ff16614742576001600160f01b03831660008181526015602090815260408083206001600160a01b038716808552908352818420805460ff19166001908117909155858552600d84528285208054601e8652848720848852865284872081905580830182559086528486200180546001600160a01b031916909217909155848452601b83528184208054808301825590855283852001849055848452601c83528184208054808301825590855283852001849055938352601d825282208054938401815582528120909101555b506001600160f01b0382166000908152601e602090815260408083206001600160a01b038516845290915290205492915050565b60008161478b84670de0b6b3a7640000615852565b6147959190615869565b9392505050565b60008060006147a9610d5d565b6000546147b69190615535565b9050808711156147c4578096505b670de0b6b3a76400006147d78589615852565b6147e19190615869565b9250846001600160801b031660030361484257600060045411801561480857506003548710155b61483d5760405162461bcd60e51b8152600401610c29906020808252600490820152631e36b4b760e11b604082015260600190565b61489c565b846001600160801b031660040361489c57600060065411801561486757506005548710155b61489c5760405162461bcd60e51b8152600401610c29906020808252600490820152631e36b4b760e11b604082015260600190565b6001600160f01b03891660009081526017602090815260408083206001600160a01b038a16845282528083206001600160801b0389168452909152902054886148e589836154f7565b111561491657670de0b6b3a7640000856148ff838c615535565b6149099190615852565b6149139190615869565b93505b88811080156149255750600084115b61495a5760405162461bcd60e51b8152600401610c29906020808252600490820152636e6f706560e01b604082015260600190565b6149648486614776565b92505050965096945050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526116bf9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614b2e565b6149e2614617565b600080516020615b4f833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b614a426145e6565b600080516020615b4f833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833614a1c565b6000614a9083600a615ad1565b614a9b83600a615ad1565b6142969086615852565b6040516001600160a01b03838116602483015260448201839052614ad691859182169063a9059cbb906064016149a8565b505050565b614ae3614b9f565b61262b57604051631afcd79f60e31b815260040160405180910390fd5b614b08614adb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600080602060008451602086016000885af180614b51576040513d6000823e3d81fd5b50506000513d91508115614b69578060011415614b76565b6001600160a01b0384163b155b156116bf57604051635274afe760e01b81526001600160a01b0385166004820152602401610c29565b6000614ba96144ca565b54600160401b900460ff16919050565b80356001600160f01b0381168114614bd057600080fd5b919050565b60008083601f840112614be757600080fd5b5081356001600160401b03811115614bfe57600080fd5b6020830191508360208260051b8501011115614c1957600080fd5b9250929050565b60008060008060608587031215614c3657600080fd5b84359350614c4660208601614bb9565b925060408501356001600160401b03811115614c6157600080fd5b614c6d87828801614bd5565b95989497509550505050565b6001600160a01b038116811461443757600080fd5b60008060408385031215614ca157600080fd5b823591506020830135614cb381614c79565b809150509250929050565b80356001600160801b0381168114614bd057600080fd5b60008060408385031215614ce857600080fd5b8235614cf381614c79565b9150614d0160208401614cbe565b90509250929050565b6000815180845260005b81811015614d3057602081850181015186830182015201614d14565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006147956020830184614d0a565b60008060408385031215614d7657600080fd5b614d7f83614bb9565b946020939093013593505050565b60008060408385031215614da057600080fd5b614cf383614cbe565b600060208284031215614dbb57600080fd5b61479582614bb9565b600080600060408486031215614dd957600080fd5b8335925060208401356001600160401b03811115614df657600080fd5b614e0286828701614bd5565b9497909650939450505050565b60008060408385031215614e2257600080fd5b614e2b83614bb9565b91506020830135614cb381614c79565b600060208284031215614e4d57600080fd5b5035919050565b600060208284031215614e6657600080fd5b813561479581614c79565b60008060208385031215614e8457600080fd5b82356001600160401b03811115614e9a57600080fd5b614ea685828601614bd5565b90969095509350505050565b600080600060608486031215614ec757600080fd5b614ed084614bb9565b92506020840135614ee081614c79565b9150614eee60408501614cbe565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b6000806001600160401b03841115614f2757614f27614ef7565b50604051601f19601f85018116603f011681018181106001600160401b0382111715614f5557614f55614ef7565b604052838152905080828401851015614f6d57600080fd5b83836020830137600060208583010152509392505050565b600082601f830112614f9657600080fd5b61479583833560208501614f0d565b60008060408385031215614fb857600080fd5b8235614fc381614c79565b915060208301356001600160401b03811115614fde57600080fd5b614fea85828601614f85565b9150509250929050565b60006040828403121561500657600080fd5b8260408301111561501657600080fd5b50919050565b60008060006060848603121561503157600080fd5b8335925061504160208501614bb9565b9150604084013561505181614c79565b809150509250925092565b6000806000806040858703121561507257600080fd5b84356001600160401b0381111561508857600080fd5b61509487828801614bd5565b90955093505060208501356001600160401b03811115614c6157600080fd5b6000806000606084860312156150c857600080fd5b6150d184614bb9565b925060208401356150e181614c79565b929592945050506040919091013590565b6000806000806000806080878903121561510b57600080fd5b8635955061511b60208801614bb9565b945060408701356001600160401b0381111561513657600080fd5b61514289828a01614bd5565b90955093505060608701356001600160401b0381111561516157600080fd5b61516d89828a01614bd5565b979a9699509497509295939492505050565b600082601f83011261519057600080fd5b604051608081016001600160401b03811182821017156151b2576151b2614ef7565b6040528060808401858111156151c757600080fd5b845b818110156151e15780358352602092830192016151c9565b509195945050505050565b60008060008060008060008060006101608a8c03121561520b57600080fd5b6152148a614cbe565b985061522260208b01614cbe565b975060408a0135965060608a01356001600160401b0381111561524457600080fd5b6152508c828d01614bd5565b90975095505060808a0135935061526a8b60a08c0161517f565b92506101208a013561527b81614c79565b91506101408a01356001600160401b0381111561529757600080fd5b8a01606081018c10156152a957600080fd5b809150509295985092959850929598565b6000602082840312156152cc57600080fd5b81356001600160401b038111156152e257600080fd5b8201601f810184136152f357600080fd5b6142a084823560208401614f0d565b801515811461443757600080fd5b60008060006060848603121561532557600080fd5b83359250602084013561504181615302565b60008083601f84011261534957600080fd5b5081356001600160401b0381111561536057600080fd5b602083019150836020828501011115614c1957600080fd5b60008060008060006080868803121561539057600080fd5b61539986614bb9565b945060208601356001600160401b038111156153b457600080fd5b6153c088828901615337565b9095509350506040860135915060608601356153db81614c79565b809150509295509295909350565b600080604083850312156153fc57600080fd5b8235915060208301356001600160401b03811115614fde57600080fd5b6000806020838503121561542c57600080fd5b82356001600160401b0381111561544257600080fd5b614ea685828601615337565b60006020828403121561546057600080fd5b61479582614cbe565b60008060008060e0858703121561547f57600080fd5b8435935060208501359250615497866040870161517f565b915060c08501356154a781614c79565b939692955090935050565b6000602082840312156154c457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156111a6576111a66154e1565b60006001600160801b0382166001600160801b03810361552c5761552c6154e1565b60010192915050565b818103818111156111a6576111a66154e1565b600181811c9082168061555c57607f821691505b60208210810361501657634e487b7160e01b600052602260045260246000fd5b6001600160801b0382811682821603908111156111a6576111a66154e1565b6001600160801b0381811683821601908111156111a6576111a66154e1565b6000815480845260208401935082600052602060002060005b828110156155f15781548652602090950194600191820191016155d3565b5093949350505050565b6001600160f01b038916815260208082018990526040820188905260608201879052610100608083018190528654908301819052600087815291822090610120840190835b818110156156675783546001600160a01b0316835260019384019360209093019201615640565b505083810360a085015261567b81886155ba565b91505082810360c084015261569081866155ba565b905082810360e08401526156a481856155ba565b9b9a5050505050505050505050565b60208082526003908201526218985960ea1b604082015260600190565b6000602082840312156156e257600080fd5b815161479581614c79565b60ff81811683821601908111156111a6576111a66154e1565b6000808335601e1984360301811261571d57600080fd5b8301803591506001600160401b0382111561573757600080fd5b602001915036819003821315614c1957600080fd5b601f821115614ad657806000526020600020601f840160051c810160208510156157735750805b601f840160051c820191505b81811015613466576000815560010161577f565b6001600160401b038311156157aa576157aa614ef7565b6157be836157b88354615548565b8361574c565b6000601f8411600181146157f257600085156157da5750838201355b600019600387901b1c1916600186901b178355613466565b600083815260209020601f19861690835b828110156158235786850135825560209485019460019092019101615803565b50868210156158405760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820281158282048414176111a6576111a66154e1565b60008261588657634e487b7160e01b600052601260045260246000fd5b500490565b81516001600160401b038111156158a4576158a4614ef7565b6158b8816158b28454615548565b8461574c565b6020601f8211600181146158ec57600083156158d45750848201515b600019600385901b1c1916600184901b178455613466565b600084815260208120601f198516915b8281101561591c57878501518255602094850194600190920191016158fc565b508482101561593a5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60006020828403121561595b57600080fd5b815161479581615302565b8183823760009101908152919050565b6001600160f01b039690961686526001600160801b039490941660208601526001600160a01b039290921660408501526060840152608083015260a082015260c00190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6001815b6001841115615a2557808504811115615a0957615a096154e1565b6001841615615a1757908102905b60019390931c9280026159ee565b935093915050565b600082615a3c575060016111a6565b81615a49575060006111a6565b8160018114615a5f5760028114615a6957615a85565b60019150506111a6565b60ff841115615a7a57615a7a6154e1565b50506001821b6111a6565b5060208310610133831016604e8410600b8410161715615aa8575081810a6111a6565b615ab560001984846159ea565b8060001904821115615ac957615ac96154e1565b029392505050565b60006147958383615a2d565b6000808354615aeb81615548565b600182168015615b025760018114615b17576151e1565b60ff19831686528115158202860193506151e1565b86600052602060002060005b83811015615b3f57815488820152600190910190602001615b23565b5050509390930194935050505056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a264697066735822122071740968fb224c46b2dd7bd53815f751a69cd4a1c8a43aed8568cdbe91dc9e3f64736f6c634300081e0033