0 txs
4 calls
constructor
No constructor.
functions
allowance
viewfunction allowance(address ownerAddr, address spenderAddr) view returns (uint256)
asset
viewfunction asset() view returns (address)
assetsUpdatedOn
viewfunction assetsUpdatedOn() view returns (uint256)
balanceOf
viewfunction balanceOf(address addr) view returns (uint256)
convertToAssets
viewfunction convertToAssets(uint256 shares) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assets) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
depositsPaused
viewfunction depositsPaused() view returns (bool)
externalAssets
viewfunction externalAssets() view returns (uint256)
feesCollector
viewfunction feesCollector() view returns (address)
feesTimestamp
viewfunction feesTimestamp() view returns (uint256)
getBurnableAmountByReceiver
viewfunction getBurnableAmountByReceiver(uint256 year, uint256 month, uint256 day, address receiverAddr) view returns (uint256)
getChangePercentage
viewfunction getChangePercentage(uint256 externalAssetsAmount) view returns (uint256)
getClaimableAmountByReceiver
viewfunction getClaimableAmountByReceiver(uint256 year, uint256 month, uint256 day, address receiverAddr) view returns (uint256)
getInitializedVersion
viewfunction getInitializedVersion() view returns (uint8)
getMaxAllowedChange
viewfunction getMaxAllowedChange() view returns (uint256)
getRequirementByDate
viewfunction getRequirementByDate(uint256 year, uint256 month, uint256 day) view returns (uint256 shares, uint256 assets)
getScheduledTransactionsByDate
viewfunction getScheduledTransactionsByDate(uint256 year, uint256 month, uint256 day) view returns (uint256 totalTransactions, uint256 executionEpoch)
getWithdrawalEpoch
viewfunction getWithdrawalEpoch() view returns (uint256 year, uint256 month, uint256 day, uint256 claimableEpoch)
globalLiabilityAssets
viewfunction globalLiabilityAssets() view returns (uint256)
globalLiabilityShares
viewfunction globalLiabilityShares() view returns (uint256)
isBlacklisted
viewfunction isBlacklisted(address) view returns (bool)
lagDuration
viewfunction lagDuration() view returns (uint256)
managementFeePercent
viewfunction managementFeePercent() view returns (uint256)
maxChangePercent
viewfunction maxChangePercent() view returns (uint256)
maxDeposit
viewfunction maxDeposit(address) view returns (uint256)
maxDepositAmount
viewfunction maxDepositAmount() view returns (uint256)
maxMint
viewfunction maxMint(address) view returns (uint256)
maxRedeem
viewfunction maxRedeem(address holderAddr) view returns (uint256)
maxSupply
viewfunction maxSupply() view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address holderAddr) view returns (uint256)
maxWithdrawalAmount
viewfunction maxWithdrawalAmount() view returns (uint256)
name
viewfunction name() view returns (string)
operator
viewfunction operator() view returns (address)
owner
viewfunction owner() view returns (address)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256)
previewMint
viewfunction previewMint(uint256 shares) view returns (uint256)
previewRedeem
viewfunction previewRedeem(uint256 shares) view returns (uint256 assets)
previewWithdraw
viewfunction previewWithdraw(uint256 assets) view returns (uint256)
redeem
purefunction redeem(uint256, address, address) pure returns (uint256)
scheduledCallerAddress
viewfunction scheduledCallerAddress() view returns (address)
settlementAccount
viewfunction settlementAccount() view returns (address)
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256)
totalCollectableFees
viewfunction totalCollectableFees() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalWhitelistedSubAccounts
viewfunction totalWhitelistedSubAccounts() view returns (uint256)
whitelistedSubAccounts
viewfunction whitelistedSubAccounts(address) view returns (bool)
withdraw
purefunction withdraw(uint256, address, address) pure returns (uint256)
withdrawalFee
viewfunction withdrawalFee() view returns (uint256)
withdrawalsPaused
viewfunction withdrawalsPaused() view returns (bool)
addToBlacklist
nonpayablefunction addToBlacklist(address addr)
addWhitelistedSubaccount
nonpayablefunction addWhitelistedSubaccount(address[] arr)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
chargeManagementFee
nonpayablefunction chargeManagementFee()
claim
nonpayablefunction claim(uint256 year, uint256 month, uint256 day, address receiverAddr) returns (uint256, uint256)
collectFees
nonpayablefunction collectFees()
configure
nonpayablefunction configure(uint256 newLagDuration, uint256 newMaxDepositAmount, uint256 newMaxWithdrawalAmount, uint256 newMaxTokenSupply, uint256 newManagementFeePercent, uint256 newMaxChangePercent, address newUnderlyingAsset, address newFeesCollectorAddr, address newScheduledCallerAddress, address newOperatorAddress)
deposit
nonpayablefunction deposit(uint256 assets, address receiver) returns (uint256 shares)
depositToSubaccount
nonpayablefunction depositToSubaccount(uint256 amount, address subAccountAddr)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(address token, address destinationAddr)
initialize
nonpayablefunction initialize(address newOwner, uint8 erc20Decimals, string erc20Symbol, string erc20Name)
mint
nonpayablefunction mint(uint256 shares, address receiver) returns (uint256 assets)
pauseDepositsAndWithdrawals
nonpayablefunction pauseDepositsAndWithdrawals(bool bPauseDeposits, bool bPauseWithdrawals)
processAllClaimsByDate
nonpayablefunction processAllClaimsByDate(uint256 year, uint256 month, uint256 day, uint256 maxLimit)
removeFromBlacklist
nonpayablefunction removeFromBlacklist(address addr)
removeWhitelistedSubaccount
nonpayablefunction removeWhitelistedSubaccount(address[] arr)
requestRedeem
nonpayablefunction requestRedeem(uint256 shares, address receiverAddr, address holderAddr) returns (uint256 assets, uint256 claimableEpoch)
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateFeeCollector
nonpayablefunction updateFeeCollector(address newFeeCollectorAddr)
updateIssuanceLimits
nonpayablefunction updateIssuanceLimits(uint256 newMaxDepositAmount, uint256 newMaxWithdrawalAmount, uint256 newMaxTokenSupply)
updateManagementFee
nonpayablefunction updateManagementFee(uint256 newManagementFeePercent)
updateMaxChangePercent
nonpayablefunction updateMaxChangePercent(uint256 newValue)
updateOperator
nonpayablefunction updateOperator(address addr)
updateSettlementAccount
nonpayablefunction updateSettlementAccount(address addr)
updateTimelockDuration
nonpayablefunction updateTimelockDuration(uint256 newDuration)
updateTotalAssets
nonpayablefunction updateTotalAssets(uint256 externalAssetsAmount)
updateWithdrawalFee
nonpayablefunction updateWithdrawalFee(uint256 newWithdrawalFee)
withdrawFromSubaccount
nonpayablefunction withdrawFromSubaccount(uint256 amount, address subAccountAddr)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Deposit
event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)
DepositWithdrawalStatusChanged
event DepositWithdrawalStatusChanged(bool bDepositsPaused, bool bWithdrawalsPaused)
FeeCollectorUpdated
event FeeCollectorUpdated(address newFeeCollectorAddr)
FeesCollected
event FeesCollected(uint256 amount)
Initialized
event Initialized(uint8 version)
ManagementFeeCharged
event ManagementFeeCharged(uint256 managementFeeAmount)
ManagementFeeUpdated
event ManagementFeeUpdated(uint256 newManagementFeePercent)
MaxChangePercentUpdated
event MaxChangePercentUpdated(uint256 newValue)
OnAccountConfigured
event OnAccountConfigured()
OnEmergencyWithdraw
event OnEmergencyWithdraw(uint256 withdrawalAmount, address tokenAddr, address destinationAddr)
OnMaxSupplyChanged
event OnMaxSupplyChanged(uint256 prevValue, uint256 newValue)
OperatorUpdated
event OperatorUpdated(address newAddr)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Withdraw
event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)
WithdrawalProcessed
event WithdrawalProcessed(uint256 assetsAmount, uint256 processedOn, address receiverAddr, uint256 requestedOn, bool wasBlacklisted)
WithdrawalRequested
event WithdrawalRequested(address ownerAddr, address receiverAddr, uint256 shares, uint256 assets, uint256 fee, uint256 year, uint256 month, uint256 day)
errors
AccountNotWhitelisted
error AccountNotWhitelisted()
AddressBlacklisted
error AddressBlacklisted()
AmountExceedsAllowance
error AmountExceedsAllowance()
AmountExceedsSenderBalance
error AmountExceedsSenderBalance()
AmountTooLow
error AmountTooLow()
AssetsAmountRequired
error AssetsAmountRequired()
BalanceCheckFailed
error BalanceCheckFailed()
BurnAmountExceedsBalance
error BurnAmountExceedsBalance()
CannotBlacklistOwner
error CannotBlacklistOwner()
CollectorRequired
error CollectorRequired()
DepositLimitReached
error DepositLimitReached()
DepositsPaused
error DepositsPaused()
InsufficientAllowance
error InsufficientAllowance()
InsufficientBalance
error InsufficientBalance()
InsufficientShares
error InsufficientShares()
InvalidAddress
error InvalidAddress()
InvalidDepositLimit
error InvalidDepositLimit()
InvalidExternalAssets
error InvalidExternalAssets()
InvalidHolder
error InvalidHolder()
InvalidMaxSupply
error InvalidMaxSupply()
InvalidOwner
error InvalidOwner()
InvalidPercentage
error InvalidPercentage()
InvalidReceiver
error InvalidReceiver()
InvalidTimestamp
error InvalidTimestamp()
InvalidWithdrawalLimit
error InvalidWithdrawalLimit()
LimitRequired
error LimitRequired()
MaxAllowedChangeReached
error MaxAllowedChangeReached()
MaxMintReached
error MaxMintReached()
MaxSupplyLimitReached
error MaxSupplyLimitReached()
NonZeroAddressRequired
error NonZeroAddressRequired()
NonZeroAmountRequired
error NonZeroAmountRequired()
NoSharesForReceiver
error NoSharesForReceiver()
NothingToProcess
error NothingToProcess()
OperatorOnly
error OperatorOnly()
OwnerOnly
error OwnerOnly()
PoolAlreadyConfigured
error PoolAlreadyConfigured()
PoolNotConfigured
error PoolNotConfigured()
PoolOwnerRequired
error PoolOwnerRequired()
ReentrantCall
error ReentrantCall()
SettlementAccountNotSet
error SettlementAccountNotSet()
SharesAmountRequired
error SharesAmountRequired()
TooEarly
error TooEarly()
TotalAssetsError
error TotalAssetsError()
WithdrawalLimitReached
error WithdrawalLimitReached()
WithdrawalRequestRequired
error WithdrawalRequestRequired()
WithdrawalsPaused
error WithdrawalsPaused()
creation bytecode
0x6080604052348015600e575f80fd5b5060156019565b60d3565b5f54610100900460ff161560835760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161460d1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615272806100e05f395ff3fe608060405234801561000f575f80fd5b506004361061047a575f3560e01c80638ed8327111610258578063cc0e3f2c1161014b578063dd62ed3e116100ca578063ef8b30f71161008f578063ef8b30f71461089f578063f2fde38b14610a24578063f3cbf47c14610a37578063fa20e0fe14610a4a578063fe575a8714610a53578063ff3c63c014610a75575f80fd5b8063dd62ed3e146109b5578063e2eb36b9146109ed578063e622868014610a00578063e976d43114610a09578063e9f2838e14610a12575f80fd5b8063d3a8d71811610110578063d3a8d71814610937578063d5abeb011461093f578063d905777e146106f0578063d961b58c14610947578063dc68a93a14610950575f80fd5b8063cc0e3f2c146108e2578063cc4cd1d3146108f5578063ce96cb7714610908578063cfcf6e301461091b578063d2c35ce814610924575f80fd5b8063b3d7f6b9116101d7578063be1f92141161019c578063be1f921414610877578063c63d75b61461088a578063c6e6f5921461089f578063c8796572146108b2578063ca55a557146108ba575f80fd5b8063b3d7f6b91461081c578063b460af941461082f578063ba0876521461082f578063baaa19fb14610842578063bb27070914610855575f80fd5b8063a08d3aae1161021d578063a08d3aae146107c6578063a9059cbb146107d9578063ac7475ed146107ec578063b3c65015146107ff578063b3c9e83d14610809575f80fd5b80638ed832711461078657806394bf804d1461078f57806395d89b41146107a25780639cb43f81146107aa5780639cf160f6146107b3575f80fd5b80634cdad506116103705780636e553f65116102ef578063790739a2116102b4578063790739a2146107335780637d41c86e146107465780638bc7e8c4146107595780638c0190e3146107625780638da5cb5b14610775575f80fd5b80636e553f65146106dd57806370a08231146106f057806372332aa61461071857806373f351c814610721578063785c31271461072a575f80fd5b806359afd7621161033557806359afd7621461066f57806360da3e83146106825780636382d9ad1461068f57806368e7d11d146106a25780636c46407b146106b5575f80fd5b80634cdad5061461061b578063520cd0361461062e578063537df3b614610636578063569b8e2c14610649578063570ca7351461065c575f80fd5b806323b872dd116103fc57806336b7ea15116103c157806336b7ea15146105ae57806338d52e0f146105b7578063402d267d146105e257806342fe0980146105f557806344337ea114610608575f80fd5b806323b872dd1461054d57806324e86d671461056057806328f8568014610569578063313ce5671461057c578063339eeb681461059b575f80fd5b80630a28a477116104425780630a28a477146104f95780631080f02d1461050c57806318160ddd1461051f578063184466c9146105275780631f4f519c1461053a575f80fd5b806301e1d1141461047e578063030d624a1461049957806306fdde03146104ae57806307a2d13a146104c3578063095ea7b3146104d6575b5f80fd5b610486610ace565b6040519081526020015b60405180910390f35b6104ac6104a7366004614ac4565b610adc565b005b6104b6610c3f565b6040516104909190614b09565b6104866104d1366004614ac4565b610ccb565b6104e96104e4366004614b2f565b610cdc565b6040519015158152602001610490565b610486610507366004614ac4565b610cfd565b6104ac61051a366004614b59565b610d09565b610486610e58565b6104ac610535366004614ac4565b610e61565b6104ac610548366004614ac4565b610f0f565b6104e961055b366004614bca565b610fbc565b610486600f5481565b610486610577366004614ac4565b611093565b6002546105899060ff1681565b60405160ff9091168152602001610490565b6104ac6105a9366004614c08565b611106565b610486601e5481565b600a546201000090046001600160a01b03165b6040516001600160a01b039091168152602001610490565b6104866105f0366004614c08565b6111b1565b6104ac610603366004614cc2565b6111de565b6104ac610616366004614c08565b611364565b610486610629366004614ac4565b611420565b61048661142a565b6104ac610644366004614c08565b611454565b6104ac610657366004614ac4565b6114de565b6023546105ca906001600160a01b031681565b6104ac61067d366004614d50565b61154e565b600a546104e99060ff1681565b6104ac61069d366004614d7e565b6116b8565b6104ac6106b0366004614b59565b611843565b6106c86106c3366004614daa565b61196e565b60408051928352602083019190915201610490565b6104866106eb366004614d50565b6119c9565b6104866106fe366004614c08565b6001600160a01b03165f9081526007602052604090205490565b61048660215481565b610486601d5481565b610486601c5481565b6104ac610741366004614ac4565b611b33565b6106c8610754366004614dd3565b611c17565b610486600e5481565b6104ac610770366004614e1f565b611cc4565b601b546001600160a01b03166105ca565b610486600c5481565b61048661079d366004614d50565b611d39565b6104b6611ea6565b61048660105481565b600b546105ca906001600160a01b031681565b6104ac6107d4366004614e4b565b611eb3565b6104e96107e7366004614b2f565b6120cd565b6104ac6107fa366004614c08565b61213e565b5f5460ff16610589565b6106c8610817366004614edf565b612222565b61048661082a366004614ac4565b6122a6565b61048661083d366004614dd3565b6122b2565b6104ac610850366004614daa565b6122cc565b6104e9610863366004614c08565b60246020525f908152604090205460ff1681565b610486610885366004614edf565b612347565b610486610898366004614c08565b5060065490565b6104866108ad366004614ac4565b6123a0565b6104ac6123ab565b6108c261244c565b604080519485526020850193909352918301526060820152608001610490565b6013546105ca906001600160a01b031681565b6104ac610903366004614d50565b612490565b610486610916366004614c08565b612603565b61048660115481565b6104ac610932366004614c08565b612625565b6104ac6126fc565b600654610486565b61048660125481565b61048661095e366004614edf565b604080516020808201969096528082019490945260608085019390935280518085039093018352608090930183528151918401919091205f908152601784528281206001600160a01b039092168152925290205490565b6104866109c3366004614d7e565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b6022546105ca906001600160a01b031681565b61048660205481565b610486600d5481565b600a546104e990610100900460ff1681565b6104ac610a32366004614c08565b6127dd565b6104ac610a45366004614f1d565b612974565b610486601f5481565b6104e9610a61366004614c08565b60096020525f908152604090205460ff1681565b6106c8610a83366004614daa565b604080516020808201959095528082019390935260608084019290925280518084039092018252608090920182528051908301205f9081526014909252902080546001909101549091565b5f610ad7612f10565b905090565b610ae4612fd7565b600a546201000090046001600160a01b0316610b1357604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b03163314610b3e57604051630b2db9b760e31b815260040160405180910390fd5b601d8190556040518181527f2147e2bc8c39e67f74b1a9e08896ea1485442096765942206af1f4bc8bcde9179060200160405180910390a15f81604051602401610b8a91815260200190565b60408051601f19818403018152918152602080830180516001600160e01b0316630186b12560e11b1790529051610bc2929101614b09565b60408051808303601f1901815290829052805160209091012060225463af6f8c1b60e01b8352600483018290529092506001600160a01b03169063af6f8c1b906024015f604051808303815f87803b158015610c1c575f80fd5b505af1158015610c2e573d5f803e3d5ffd5b5050505050610c3c60018055565b50565b60048054610c4c90614f4c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7890614f4c565b8015610cc35780601f10610c9a57610100808354040283529160200191610cc3565b820191905f5260205f20905b815481529060010190602001808311610ca657829003601f168201915b505050505081565b5f610cd6825f613001565b92915050565b5f610ce5612fd7565b610cf0338484613031565b5060015b610cd660018055565b5f610cd68260016130cb565b610d11612fd7565b600a546201000090046001600160a01b0316610d4057604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b03163314610d6b57604051630b2db9b760e31b815260040160405180910390fd5b5f5b81811015610e325760245f848484818110610d8a57610d8a614f84565b9050602002016020810190610d9f9190614c08565b6001600160a01b0316815260208101919091526040015f205460ff16610dd85760405163e6c4247b60e01b815260040160405180910390fd5b5f60245f858585818110610dee57610dee614f84565b9050602002016020810190610e039190614c08565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610d6d565b508181905060215f828254610e479190614fac565b9091555050600180555050565b5050565b5f610ad76130f5565b610e69612fd7565b600a546201000090046001600160a01b0316610e9857604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b03163314610ec357604051630b2db9b760e31b815260040160405180910390fd5b600f819055604051602481018290525f9060440160408051601f19818403018152918152602080830180516001600160e01b031663184466c960e01b1790529051610bc2929101614b09565b610f17612fd7565b6023546001600160a01b03163314610f415760405162572f1f60e91b815260040160405180910390fd5b4261012c601f54610f529190614fbf565b10610f705760405163b7d0949760e01b815260040160405180910390fd5b5f610f7a82611093565b90505f610f8561142a565b905080821115610fa857604051631373d6db60e01b815260040160405180910390fd5b5050601c81905542601f55610c3c60018055565b5f610fc5612fd7565b6001600160a01b0384165f9081526009602052604090205460ff168061100257506001600160a01b0383165f9081526009602052604090205460ff165b1561102057604051631f7b776b60e01b815260040160405180910390fd5b6001600160a01b0384165f90815260086020908152604080832033845290915290205482811015611064576040516303814af160e61b815260040160405180910390fd5b61106f858585613106565b50611084853361107f8685614fac565b613031565b505060018080555b9392505050565b5f808215806110a25750601c54155b156110ae57505f610cd6565b601c5483116110e257606483601c5460646110c99190614fd2565b6110d39190614ffd565b6110dd9190614fac565b61108c565b601c546064906110f28583614fd2565b6110fc9190614ffd565b61108c9190614fac565b61110e612fd7565b600a546201000090046001600160a01b031661113d57604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b0316331461116857604051630b2db9b760e31b815260040160405180910390fd5b6001600160a01b03811661118f5760405163e6c4247b60e01b815260040160405180910390fd5b601380546001600160a01b0319166001600160a01b0383161790556001805550565b5f6111ba6130f5565b15806111cc57505f6111ca612f10565b115b6111d6575f610cd6565b5050600c5490565b5f54610100900460ff16158080156111fc57505f54600160ff909116105b806112155750303b15801561121557505f5460ff166001145b61127d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561129e575f805461ff0019166101001790555b6001600160a01b0385166112c557604051638b50645160e01b815260040160405180910390fd5b6002805460ff191660ff861617905560036112e08482615054565b5060046112ed8382615054565b50600a805461ffff1916610101179055601b80546001600160a01b0319166001600160a01b038716179055801561135d575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b61136c612fd7565b600a546201000090046001600160a01b031661139b57604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b031633146113c657604051630b2db9b760e31b815260040160405180910390fd5b601b546001600160a01b03908116908216036113f5576040516339b9e47160e21b815260040160405180910390fd5b6001600160a01b0381165f908152600960205260409020805460ff19166001179055610c3c60018055565b5f61108c82613230565b5f62015180601f544261143d9190614fac565b60205461144a9190614fd2565b610ad79190614ffd565b61145c612fd7565b600a546201000090046001600160a01b031661148b57604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b031633146114b657604051630b2db9b760e31b815260040160405180910390fd5b6001600160a01b0381165f908152600960205260409020805460ff19169055610c3c60018055565b6114e6612fd7565b600a546201000090046001600160a01b031661151557604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b0316331461154057604051630b2db9b760e31b815260040160405180910390fd5b600e819055610c3c60018055565b611556612fd7565b600a546201000090046001600160a01b031661158557604051636b271baf60e11b815260040160405180910390fd5b6023546001600160a01b031633146115af5760405162572f1f60e91b815260040160405180910390fd5b60018210156115d1576040516360b9116960e11b815260040160405180910390fd5b6001600160a01b0381165f9081526024602052604090205460ff166116095760405163014cc88960e21b815260040160405180910390fd5b601c5482111561162c5760405163200f4ff760e01b815260040160405180910390fd5b81601c5f82825461163d9190614fac565b9091555050600a54604051631a4ca37b60e21b8152620100009091046001600160a01b039081166004830152602482018490523060448301528216906369328dec906064015f604051808303815f87803b158015611699575f80fd5b505af11580156116ab573d5f803e3d5ffd5b50505050610e5460018055565b6116c0612fd7565b600a546201000090046001600160a01b03166116ef57604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b0316331461171a57604051630b2db9b760e31b815260040160405180910390fd5b6001600160a01b0381165f9081526009602052604090205460ff161561175357604051631f7b776b60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611797573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bb919061510f565b600a549091506001600160a01b03620100009091048116908416036117e5576117e560018061327c565b6117f08383836132e9565b604080518281526001600160a01b03858116602083015284168183015290517f853009bb99110572d2d914b6a40e1d763158ebac968d169d09e41bf6c15fc97a9181900360600190a150610e5460018055565b61184b612fd7565b600a546201000090046001600160a01b031661187a57604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b031633146118a557604051630b2db9b760e31b815260040160405180910390fd5b5f5b81811015611959575f8383838181106118c2576118c2614f84565b90506020020160208101906118d79190614c08565b6001600160a01b0316036118fe5760405163e6c4247b60e01b815260040160405180910390fd5b600160245f85858581811061191557611915614f84565b905060200201602081019061192a9190614c08565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016118a7565b508181905060215f828254610e479190614fbf565b604080516020808201869052818301859052606080830185905283518084039091018152608090920183528151918101919091205f818152601590925291812054916119be86868685808061334c565b915050935093915050565b5f6119d2612fd7565b600a546201000090046001600160a01b0316611a0157604051636b271baf60e11b815260040160405180910390fd5b600a5460ff1615611a255760405163deeb694360e01b815260040160405180910390fd5b6001600160a01b0382161580611a4357506001600160a01b03821630145b15611a6157604051631e4ec46b60e01b815260040160405180910390fd5b335f9081526009602052604090205460ff1680611a9557506001600160a01b0382165f9081526009602052604090205460ff165b15611ab357604051631f7b776b60e01b815260040160405180910390fd5b825f03611ad357604051637edcaddf60e01b815260040160405180910390fd5b611adc826111b1565b831115611afc57604051632484557960e01b815260040160405180910390fd5b611b05836123a0565b9050805f03611b27576040516334d1b1a560e11b815260040160405180910390fd5b610cf4338385846133a7565b611b3b612fd7565b600a546201000090046001600160a01b0316611b6a57604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b03163314611b9557604051630b2db9b760e31b815260040160405180910390fd5b60208181556040518281527f30d8cff2601d989fea083347b4501d5e97976f0ce3cfef9d4bd76bef1b7f0e8a910160405180910390a15f81604051602401611bdf91815260200190565b60408051601f19818403018152918152602080830180516001600160e01b0316633c839cd160e11b1790529051610bc2929101614b09565b5f80611c21612fd7565b600a546201000090046001600160a01b0316611c5057604051636b271baf60e11b815260040160405180910390fd5b600a54610100900460ff1615611c7957604051636022a9e760e01b815260040160405180910390fd5b5f805f611c8888878933613537565b600f54909950939750919550935091505f03611cb057429350611cad8383838a613985565b50505b505050611cbc60018055565b935093915050565b611ccc612fd7565b600a546201000090046001600160a01b0316611cfb57604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b03163314611d2657604051630b2db9b760e31b815260040160405180910390fd5b611d30828261327c565b610e5460018055565b5f611d42612fd7565b600a546201000090046001600160a01b0316611d7157604051636b271baf60e11b815260040160405180910390fd5b600a5460ff1615611d955760405163deeb694360e01b815260040160405180910390fd5b6001600160a01b0382161580611db357506001600160a01b03821630145b15611dd157604051631e4ec46b60e01b815260040160405180910390fd5b335f9081526009602052604090205460ff1680611e0557506001600160a01b0382165f9081526009602052604090205460ff165b15611e2357604051631f7b776b60e01b815260040160405180910390fd5b825f03611e43576040516334d1b1a560e11b815260040160405180910390fd5b600654831115611e665760405163fc3fc71f60e01b815260040160405180910390fd5b611e6f836122a6565b9050611e7a826111b1565b811115611e9a57604051632484557960e01b815260040160405180910390fd5b610cf4338383866133a7565b60038054610c4c90614f4c565b611ebb612fd7565b600a546201000090046001600160a01b031615611eeb576040516346a4055d60e01b815260040160405180910390fd5b601b546001600160a01b03163314611f1657604051630b2db9b760e31b815260040160405180910390fd5b6001600160a01b038316611f3d57604051632e947acb60e01b815260040160405180910390fd5b6001600160a01b038116611f645760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038216611f8b5760405163e6c4247b60e01b815260040160405180910390fd5b845f03611fab57604051631f3b85d360e01b815260040160405180910390fd5b600a805462010000600160b01b031916620100006001600160a01b03871602179055611fd8898989613c5f565b600b80546001600160a01b038581166001600160a01b031992831617909255600f8c9055600a805461ffff1916905542601e819055601f55602280548584169083168117909155601d899055602088905560238054858516931692909217909155601b54604051636e998e1760e11b8152921660048301526201518060248301529063dd331c2e906044015f604051808303815f87803b15801561207a575f80fd5b505af115801561208c573d5f803e3d5ffd5b50506040517feeed950c9a7f978b5ee7b6074d3eb49384d6fe1430750621fb637faa5c47046d92505f9150a16120c160018055565b50505050505050505050565b5f6120d6612fd7565b335f9081526009602052604090205460ff168061210a57506001600160a01b0383165f9081526009602052604090205460ff165b1561212857604051631f7b776b60e01b815260040160405180910390fd5b612133338484613106565b9050610cd660018055565b612146612fd7565b600a546201000090046001600160a01b031661217557604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b031633146121a057604051630b2db9b760e31b815260040160405180910390fd5b6001600160a01b0381166121c75760405163e6c4247b60e01b815260040160405180910390fd5b602380546001600160a01b0319166001600160a01b0383169081179091556040519081527fb3b3f5f64ab192e4b5fefde1f51ce9733bbdcf831951543b325aebd49cc27ec4906020015b60405180910390a1610c3c60018055565b5f8061222c612fd7565b600a546201000090046001600160a01b031661225b57604051636b271baf60e11b815260040160405180910390fd5b600a54610100900460ff161561228457604051636022a9e760e01b815260040160405180910390fd5b61229086868686613985565b9150915061229d60018055565b94509492505050565b5f610cd6826001613001565b5f604051633af6971f60e11b815260040160405180910390fd5b6122d4612fd7565b600a546201000090046001600160a01b031661230357604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b0316331461232e57604051630b2db9b760e31b815260040160405180910390fd5b612339838383613c5f565b61234260018055565b505050565b604080516020808201879052818301869052606080830186905283518084039091018152608090920183528151918101919091205f908152601882528281206001600160a01b038516825290915220545b949350505050565b5f610cd6825f6130cb565b6123b3612fd7565b600a546201000090046001600160a01b03166123e257604051636b271baf60e11b815260040160405180910390fd5b601280545f9091556040518181527f860c0aa5520013080c2f65981705fcdea474d9f7c3daf954656ed5e65d692d1f9060200160405180910390a1600a54600b54612440916001600160a01b036201000090910481169116836132e9565b5061244a60018055565b565b5f805f80612473600f5461012c426124649190614fbf565b61246e9190614fbf565b613cb4565b919550935091506124888484845f808061334c565b905090919293565b612498612fd7565b600a546201000090046001600160a01b03166124c757604051636b271baf60e11b815260040160405180910390fd5b6023546001600160a01b031633146124f15760405162572f1f60e91b815260040160405180910390fd5b6001821015612513576040516360b9116960e11b815260040160405180910390fd5b6001600160a01b0381165f9081526024602052604090205460ff1661254b5760405163014cc88960e21b815260040160405180910390fd5b81601c5f82825461255c9190614fbf565b9091555050600a5461257e906201000090046001600160a01b03168284613cd9565b600a546040516311f9fbc960e21b8152620100009091046001600160a01b039081166004830152602482018490528216906347e7ef24906044015f604051808303815f87803b1580156125cf575f80fd5b505af11580156125e1573d5f803e3d5ffd5b5050600a54611d3092506201000090046001600160a01b03169050825f613cd9565b6001600160a01b0381165f90815260076020526040812054610cd69082613001565b61262d612fd7565b600a546201000090046001600160a01b031661265c57604051636b271baf60e11b815260040160405180910390fd5b601b546001600160a01b0316331461268757604051630b2db9b760e31b815260040160405180910390fd5b6001600160a01b0381166126ae57604051632e947acb60e01b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f90602001612211565b612704612fd7565b600a546201000090046001600160a01b031661273357604051636b271baf60e11b815260040160405180910390fd5b5f61273c612f10565b90505f6127106301e13380601e54426127559190614fac565b601d546127629086614fd2565b61276c9190614fd2565b6127769190614ffd565b6127809190614ffd565b905042601e819055508060125f82825461279a9190614fbf565b90915550506040518181527f2d46e156a9ac545bd5f27832a0e6293d21c92faf9237534c6b18c51e9cca59df9060200160405180910390a1505061244a60018055565b6127e5612fd7565b601b546001600160a01b0316331461281057604051630b2db9b760e31b815260040160405180910390fd5b6001600160a01b038116158061282e57506001600160a01b03811630145b1561284c576040516349e27cff60e01b815260040160405180910390fd5b6001600160a01b0381165f9081526009602052604090205460ff161561288557604051631f7b776b60e01b815260040160405180910390fd5b601b546001600160a01b031661289a82613dec565b6040516001600160a01b03831660248201525f9060440160408051601f19818403018152918152602080830180516001600160e01b031663f2fde38b60e01b17905290516128e9929101614b09565b60408051808303601f19018152908290528051602090910120602254631f229a2f60e31b8352600483018290526001600160a01b0385811660248501528681166044850152919350169063f914d178906064015f604051808303815f87803b158015612953575f80fd5b505af1158015612965573d5f803e3d5ffd5b505050505050610c3c60018055565b61297c612fd7565b600a546201000090046001600160a01b03166129ab57604051636b271baf60e11b815260040160405180910390fd5b600a54610100900460ff16156129d457604051636022a9e760e01b815260040160405180910390fd5b805f036129f4576040516334e33ddb60e01b815260040160405180910390fd5b335f9081526009602052604090205460ff1615612a2457604051631f7b776b60e01b815260040160405180910390fd5b6013546001600160a01b0316612a4d57604051631c202a9560e01b815260040160405180910390fd5b6040805160208101869052908101849052606081018390525f9060800160405160208183030381529060405280519060200120905060145f8281526020019081526020015f20600101545f03612ab657604051630683f18b60e41b815260040160405180910390fd5b612ac48585855f808061334c565b612ad061012c42614fbf565b1015612aef5760405163085de62560e01b815260040160405180910390fd5b5f818152601560205260408120548310612b16575f82815260156020526040902054612b18565b825b5f838152601560205260408120549192508267ffffffffffffffff811115612b4257612b42614c23565b604051908082528060200260200182016040528015612b6b578160200160208202803683370190505b5090505f8367ffffffffffffffff811115612b8857612b88614c23565b604051908082528060200260200182016040528015612bb1578160200160208202803683370190505b5090505f80808681875b612bc58a8a614fac565b811115612dc0575f8b8152601560205260409020612be4600183614fac565b81548110612bf457612bf4614f84565b5f918252602090912001546001600160a01b0316915082612c1481615126565b93505081888481518110612c2a57612c2a614f84565b6001600160a01b039283166020918202929092018101919091525f8d815260178252604080822093861682529290915220548751889085908110612c7057612c70614f84565b602002602001018181525050868381518110612c8e57612c8e614f84565b602002602001015184612ca19190614fbf565b5f8c81526018602090815260408083206001600160a01b0387168452909152902054909450612cd09086614fbf565b5f8c81526019602090815260408083206001600160a01b0387168452909152902054909550612cff9087614fbf565b5f8c81526017602090815260408083206001600160a01b0387168085529083528184208490558f84526018835281842081855283528184208490558f84526019835281842090845282528083208390558e83526015909152902080549197509080612d6c57612d6c61513b565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092558c82526016815260408083206001600160a01b038616845290915281205580612db881615126565b915050612bbb565b508360105f828254612dd29190614fac565b925050819055508260115f828254612dea9190614fac565b925050819055508460125f828254612e029190614fbf565b90915550505f8a81526014602052604081206001018054859290612e27908490614fac565b90915550505f8a81526014602052604081208054869290612e49908490614fac565b9091555050600a546040516370a0823160e01b81523060048201525f916201000090046001600160a01b0316906370a0823190602401602060405180830381865afa158015612e9a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ebe919061510f565b905083811015612ee157604051631e9acf1760e31b815260040160405180910390fd5b612eeb3086613e3d565b612ef68b8989613f1e565b5050505050505050505050612f0a60018055565b50505050565b600a546040516370a0823160e01b81523060048201525f918291620100009091046001600160a01b0316906370a0823190602401602060405180830381865afa158015612f5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f83919061510f565b601c54612f909190614fbf565b90505f601154601254612fa39190614fbf565b905081811115612fc65760405163d3af826360e01b815260040160405180910390fd5b612fd08183614fac565b9250505090565b600260015403612ffa576040516306fda65d60e31b815260040160405180910390fd5b6002600155565b5f61300a6130f5565b1561302b576110dd61301a612f10565b6130226130f5565b859190856140e4565b8261108c565b6001600160a01b038216158061304e57506001600160a01b038316155b1561306b5760405162b265b960e61b815260040160405180910390fd5b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8215806130de57506130dc6130f5565b155b61302b576110dd6130ed6130f5565b613022612f10565b5f601054600554610ad79190614fac565b5f6001600160a01b038316158061312457506001600160a01b038416155b156131415760405162b265b960e61b815260040160405180910390fd5b6001600160a01b0384165f90815260076020526040902054821115613179576040516312c58db360e01b815260040160405180910390fd5b6001600160a01b0384165f9081526007602052604090205461319c908390614fac565b6001600160a01b038086165f9081526007602052604080822093909355908516815220546131cb908390614fbf565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061321e9086815260200190565b60405180910390a35060019392505050565b5f8061323c835f613001565b91508190505f80600e5411156132765761271083600e5461325d9190614fd2565b6132679190614ffd565b90506132738184614fac565b91505b50915091565b600a805461ffff191683151561ff00191617610100831515810291909117918290556040805160ff8085161515825292909304909116151560208301527f559628b27717ff2f5863f3a218839e17c6bc1b900e9de0dc2b3dc365068841d791015b60405180910390a15050565b6040516001600160a01b03831660248201526044810182905261234290849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261413f565b5f81613359603c85614fd2565b613365610e1087614fd2565b620151806133748b8b8b614210565b61337e9190614fd2565b6133889190614fbf565b6133929190614fbf565b61339c9190614fbf565b979650505050505050565b600a546040516370a0823160e01b81523060048201525f916201000090046001600160a01b0316906370a0823190602401602060405180830381865afa1580156133f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613417919061510f565b6134219084614fbf565b600a54909150613442906201000090046001600160a01b0316863086614376565b600a546040516370a0823160e01b815230600482015282916201000090046001600160a01b0316906370a0823190602401602060405180830381865afa15801561348e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134b2919061510f565b146134d057604051630a85404160e11b815260040160405180910390fd5b6134da84836143ae565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051613528929190918252602082015260400190565b60405180910390a35050505050565b5f80808080306001600160a01b0389160361356557604051634971ba2d60e01b815260040160405180910390fd5b306001600160a01b0388160361358e57604051631e4ec46b60e01b815260040160405180910390fd5b60018910156135b0576040516334d1b1a560e11b815260040160405180910390fd5b6001600160a01b0388165f908152600760205260409020548911156135e857604051633999656760e01b815260040160405180910390fd5b5f806135f38b613230565b91509150600d5482111561361a57604051631b6132ab60e31b815260040160405180910390fd5b805f0361363a57604051631fbaba3560e01b815260040160405180910390fd5b5f6136458284614fac565b905081935061365e600f5461012c426124649190614fbf565b6040805160208082018690528183018590526060808301859052835180840390910181526080909201909252805191012092995090975095506136a58888885f808061334c565b98508b6001600160a01b03168a6001600160a01b0316146136cb576136cb8c8b8f614473565b6136d68c308f613106565b505f81815260146020526040812060010180548692906136f7908490614fbf565b90915550505f81815260146020526040812080548f9290613719908490614fbf565b925050819055508c60105f8282546137319190614fbf565b925050819055508260115f8282546137499190614fbf565b90915550505f8181526017602090815260408083206001600160a01b038f16845290915281205490036138175760155f8281526020019081526020015f208b908060018154018082558091505060019003905f5260205f20015f9091909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555060155f8281526020019081526020015f208054905060165f8381526020019081526020015f205f8d6001600160a01b03166001600160a01b031681526020019081526020015f20819055505b5f8181526017602090815260408083206001600160a01b038f16845290915281208054859290613848908490614fbf565b90915550505f8181526018602090815260408083206001600160a01b038f168452909152812080548f929061387e908490614fbf565b90915550505f8181526019602090815260408083206001600160a01b038f168452909152812080548492906138b4908490614fbf565b9250508190555042601a5f8381526020019081526020015f205f8d6001600160a01b03166001600160a01b031681526020019081526020015f20819055507ff60d67b14614c8984f880fd3b3bc7ddc3c2913656340f454bf0c7431152bbda68c8c8f87868d8d8d60405161396e9897969594939291906001600160a01b03988916815296909716602087015260408601949094526060850192909252608084015260a083015260c082015260e08101919091526101000190565b60405180910390a150505050945094509450945094565b335f90815260096020526040812054819060ff16806139bb57506001600160a01b0383165f9081526009602052604090205460ff165b156139d957604051631f7b776b60e01b815260040160405180910390fd5b6040805160208101889052908101869052606081018590525f9060800160408051601f1981840301815291815281516020928301205f818152601884528281206001600160a01b03891682529093529120549091506001811015613a50576040516339c556cd60e11b815260040160405180910390fd5b5f8281526017602090815260408083206001600160a01b0389168085529083528184205486855260198452828520918552925290912054600f5415613ac857613a9d8a8a8a5f808061334c565b613aa961012c42614fbf565b1015613ac85760405163085de62560e01b815260040160405180910390fd5b5f8481526017602090815260408083206001600160a01b038b16808552908352818420849055878452601883528184208185528352818420849055878452601983528184209084528252808320839055868352601490915281208054859290613b32908490614fac565b90915550613b4290508183614fbf565b5f8581526014602052604081206001018054909190613b62908490614fac565b925050819055508260105f828254613b7a9190614fac565b925050819055508160115f828254613b929190614fac565b925050819055508060125f828254613baa9190614fbf565b90915550613bba905084886144d0565b613bc43084613e3d565b5f848152601a602090815260408083206001600160a01b038b16808552908352818420548251878152429481019490945291830152606082015260808101919091527fa6f30f7bcb55dd97fe6efdedd57aa5ee608cf66171304f643b791c6f37f495899060a00160405180910390a1600a54613c50906201000090046001600160a01b031688846132e9565b50909890975095505050505050565b825f03613c7f57604051637fb1277b60e01b815260040160405180910390fd5b815f03613c9f5760405163e8498be360e01b815260040160405180910390fd5b613ca8816146b5565b50600c91909155600d55565b5f8080613ccc613cc76201518086614ffd565b614720565b9196909550909350915050565b801580613d515750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613d2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d4f919061510f565b155b613dbc5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401611274565b6040516001600160a01b03831660248201526044810182905261234290849063095ea7b360e01b90606401613315565b601b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b805f03613e5d576040516360b9116960e11b815260040160405180910390fd5b6001600160a01b0382165f90815260076020526040902054811115613e9557604051630bba337f60e11b815260040160405180910390fd5b6001600160a01b0382165f9081526007602052604081208054839290613ebc908490614fac565b925050819055508060055f828254613ed49190614fac565b90915550506040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b5f805b835181101561135d5760095f858381518110613f3f57613f3f614f84565b6020908102919091018101516001600160a01b031682528101919091526040015f205460ff16613f8857838181518110613f7b57613f7b614f84565b6020026020010151613f95565b6013546001600160a01b03165b91507fa6f30f7bcb55dd97fe6efdedd57aa5ee608cf66171304f643b791c6f37f49589838281518110613fca57613fca614f84565b602002602001015142868481518110613fe557613fe5614f84565b6020026020010151601a5f8a81526020019081526020015f205f89878151811061401157614011614f84565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205460095f8a888151811061404e5761404e614f84565b6020908102919091018101516001600160a01b0390811683528282019390935260409182015f2054825197885290870195909552921684830152606084015260ff90911615156080830152519081900360a00190a16140dc600a60029054906101000a90046001600160a01b0316838584815181106140cf576140cf614f84565b60200260200101516132e9565b600101613f21565b5f806140f186868661488f565b905060018360028111156141075761410761514f565b14801561412357505f848061411e5761411e614fe9565b868809115b1561413657614133600182614fbf565b90505b95945050505050565b5f614193826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166149389092919063ffffffff16565b80519091501561234257808060200190518101906141b19190615163565b6123425760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611274565b5f6107b284101561424b5760405162461bcd60e51b815260206004820152600560248201526422b93937b960d91b6044820152606401611274565b8383835f62253d8c60046064600c614264600e8861517e565b61426e91906151a4565b61427a886113246151d0565b61428491906151d0565b61428e91906151a4565b6142999060036151f7565b6142a391906151a4565b600c806142b1600e8861517e565b6142bb91906151a4565b6142c690600c6151f7565b6142d160028861517e565b6142db919061517e565b6142e79061016f6151f7565b6142f191906151a4565b6004600c614300600e8961517e565b61430a91906151a4565b614316896112c06151d0565b61432091906151d0565b61432c906105b56151f7565b61433691906151a4565b614342617d4b8761517e565b61434c91906151d0565b61435691906151d0565b614360919061517e565b61436a919061517e565b98975050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052612f0a9085906323b872dd60e01b90608401613315565b805f036143ce576040516360b9116960e11b815260040160405180910390fd5b6143d781614946565b6143f457604051633569b4df60e01b815260040160405180910390fd5b8060055f8282546144059190614fbf565b90915550506001600160a01b0382165f9081526007602052604081208054839290614431908490614fbf565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001613f12565b6001600160a01b038084165f908152600860209081526040808320938616835292905220545f198114612f0a57818110156144c1576040516313be252b60e01b815260040160405180910390fd5b612f0a848461107f8585614fac565b5f8281526016602090815260408083206001600160a01b03851684529091528120546144fe90600190614fac565b5f848152601560205260408120805492935061451b600184614fac565b8154811061452b5761452b614f84565b5f918252602090912001546001600160a01b0390811691508416811461464f575f85815260156020526040902080548490811061456a5761456a614f84565b5f918252602080832090910154878352601590915260409091206001600160a01b039091169061459b600185614fac565b815481106145ab576145ab614f84565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508060155f8781526020019081526020015f2084815481106145f9576145f9614f84565b5f91825260209091200180546001600160a01b0319166001600160a01b039290921691909117905561462c836001614fbf565b5f8681526016602090815260408083206001600160a01b03861684529091529020555b5f85815260156020526040902080548061466b5761466b61513b565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092559581526016865260408082206001600160a01b0396909616825294909552505050812055565b8015806146c457506005548111155b156146e25760405163066f305360e21b815260040160405180910390fd5b600680549082905560408051828152602081018490527fe4fd3e707c42fe7e4405214e86e4f796ecfa58dfe4d17def31221e34e2e4b2b591016132dd565b5f8080838162253d8c6147368362010bd96151d0565b61474091906151d0565b90505f62023ab16147528360046151f7565b61475c91906151a4565b9050600461476d8262023ab16151f7565b6147789060036151d0565b61478291906151a4565b61478c908361517e565b91505f62164b0961479e8460016151d0565b6147aa90610fa06151f7565b6147b491906151a4565b905060046147c4826105b56151f7565b6147ce91906151a4565b6147d8908461517e565b6147e390601f6151d0565b92505f61098f6147f48560506151f7565b6147fe91906151a4565b90505f605061480f8361098f6151f7565b61481991906151a4565b614823908661517e565b9050614830600b836151a4565b945061483d85600c6151f7565b6148488360026151d0565b614852919061517e565b9150848361486160318761517e565b61486c9060646151f7565b61487691906151d0565b61488091906151d0565b9a919950975095505050505050565b5f80805f19858709858702925082811083820303915050805f036148c6578382816148bc576148bc614fe9565b049250505061108c565b8084116148d1575f80fd5b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b606061239884845f85614960565b5f816005546006546149589190614fac565b101592915050565b6060824710156149c15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611274565b5f80866001600160a01b031685876040516149dc9190615226565b5f6040518083038185875af1925050503d805f8114614a16576040519150601f19603f3d011682016040523d82523d5f602084013e614a1b565b606091505b509150915061339c8783838760608315614a955782515f03614a8e576001600160a01b0385163b614a8e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611274565b5081612398565b6123988383815115614aaa5781518083602001fd5b8060405162461bcd60e51b81526004016112749190614b09565b5f60208284031215614ad4575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61108c6020830184614adb565b6001600160a01b0381168114610c3c575f80fd5b5f8060408385031215614b40575f80fd5b8235614b4b81614b1b565b946020939093013593505050565b5f8060208385031215614b6a575f80fd5b823567ffffffffffffffff811115614b80575f80fd5b8301601f81018513614b90575f80fd5b803567ffffffffffffffff811115614ba6575f80fd5b8560208260051b8401011115614bba575f80fd5b6020919091019590945092505050565b5f805f60608486031215614bdc575f80fd5b8335614be781614b1b565b92506020840135614bf781614b1b565b929592945050506040919091013590565b5f60208284031215614c18575f80fd5b813561108c81614b1b565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112614c46575f80fd5b813567ffffffffffffffff811115614c6057614c60614c23565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715614c8f57614c8f614c23565b604052818152838201602001851015614ca6575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215614cd5575f80fd5b8435614ce081614b1b565b9350602085013560ff81168114614cf5575f80fd5b9250604085013567ffffffffffffffff811115614d10575f80fd5b614d1c87828801614c37565b925050606085013567ffffffffffffffff811115614d38575f80fd5b614d4487828801614c37565b91505092959194509250565b5f8060408385031215614d61575f80fd5b823591506020830135614d7381614b1b565b809150509250929050565b5f8060408385031215614d8f575f80fd5b8235614d9a81614b1b565b91506020830135614d7381614b1b565b5f805f60608486031215614dbc575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215614de5575f80fd5b833592506020840135614df781614b1b565b91506040840135614e0781614b1b565b809150509250925092565b8015158114610c3c575f80fd5b5f8060408385031215614e30575f80fd5b8235614e3b81614e12565b91506020830135614d7381614e12565b5f805f805f805f805f806101408b8d031215614e65575f80fd5b8a35995060208b0135985060408b0135975060608b0135965060808b0135955060a08b0135945060c08b0135614e9a81614b1b565b935060e08b0135614eaa81614b1b565b92506101008b0135614ebb81614b1b565b91506101208b0135614ecc81614b1b565b809150509295989b9194979a5092959850565b5f805f8060808587031215614ef2575f80fd5b8435935060208501359250604085013591506060850135614f1281614b1b565b939692955090935050565b5f805f8060808587031215614f30575f80fd5b5050823594602084013594506040840135936060013592509050565b600181811c90821680614f6057607f821691505b602082108103614f7e57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cd657610cd6614f98565b80820180821115610cd657610cd6614f98565b8082028115828204841417610cd657610cd6614f98565b634e487b7160e01b5f52601260045260245ffd5b5f8261500b5761500b614fe9565b500490565b601f82111561234257805f5260205f20601f840160051c810160208510156150355750805b601f840160051c820191505b8181101561135d575f8155600101615041565b815167ffffffffffffffff81111561506e5761506e614c23565b6150828161507c8454614f4c565b84615010565b6020601f8211600181146150b4575f831561509d5750848201515b5f19600385901b1c1916600184901b17845561135d565b5f84815260208120601f198516915b828110156150e357878501518255602094850194600190920191016150c3565b508482101561510057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f6020828403121561511f575f80fd5b5051919050565b5f8161513457615134614f98565b505f190190565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215615173575f80fd5b815161108c81614e12565b8181035f83128015838313168383128216171561519d5761519d614f98565b5092915050565b5f826151b2576151b2614fe9565b600160ff1b82145f19841416156151cb576151cb614f98565b500590565b8082018281125f8312801582168215821617156151ef576151ef614f98565b505092915050565b8082025f8212600160ff1b8414161561521257615212614f98565b8181058314821517610cd657610cd6614f98565b5f82518060208501845e5f92019182525091905056fea2646970667358221220593ff9af4684aa29854d74ad8bdd9bbea617f07f354b02e9abd6e60c964aa67764736f6c634300081a0033