0 txs
95 calls
constructor
constructor()
functions
allPendingLegacyTokens
viewfunction allPendingLegacyTokens(address _stakingToken, address _user) view returns (address[] bonusTokenAddresses, string[] bonusTokenSymbols, uint256[] pendingBonusRewards)
allPendingTokens
viewfunction allPendingTokens(address _stakingToken, address _user) view returns (uint256 pendingListapie, address[] bonusTokenAddresses, string[] bonusTokenSymbols, uint256[] pendingBonusRewards)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getPoolInfo
viewfunction getPoolInfo(address _stakingToken) view returns (uint256 emission, uint256 allocpoint, uint256 sizeOfPool, uint256 totalPoint)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
legacyRewarders
viewfunction legacyRewarders(address) view returns (address)
listapie
viewfunction listapie() view returns (address)
listapiePerSec
viewfunction listapiePerSec() view returns (uint256)
mListaSV
viewfunction mListaSV() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingLegacyTokens
viewfunction pendingLegacyTokens(address _stakingToken, address _user, address _rewardToken) view returns (address bonusTokenAddress, string bonusTokenSymbol, uint256 pendingBonusToken)
pendingTokens
viewfunction pendingTokens(address _stakingToken, address _user, address _rewardToken) view returns (uint256 pendingListapie, address bonusTokenAddress, string bonusTokenSymbol, uint256 pendingBonusToken)
poolLength
viewfunction poolLength() view returns (uint256)
PoolManagers
viewfunction PoolManagers(address) view returns (bool)
receiptToStakeToken
viewfunction receiptToStakeToken(address) view returns (address)
registeredToken
viewfunction registeredToken(uint256) view returns (address)
stakingInfo
viewfunction stakingInfo(address _stakingToken, address _user) view returns (uint256 stakedAmount, uint256 availableAmount)
startTimestamp
viewfunction startTimestamp() view returns (uint256)
streamRewarderBeacon
viewfunction streamRewarderBeacon() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tokenToPoolInfo
viewfunction tokenToPoolInfo(address) view returns (address stakingToken, address receiptToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accListapiePerShare, uint256 totalStaked, address rewarder, bool isActive)
totalAllocPoint
viewfunction totalAllocPoint() view returns (uint256)
userInfo
viewfunction userInfo(address, address) view returns (uint256 amount, uint256 rewardDebt, uint256 available, uint256 unClaimedListapie)
vlListapie
viewfunction vlListapie() view returns (address)
__MasterListapie_init
nonpayablefunction __MasterListapie_init(address _listapieOFT, uint256 _listapiePerSec, uint256 _startTimestamp, address _streamRewarderBeacon)
add
nonpayablefunction add(uint256 _allocPoint, address _stakingToken, address _receiptToken, address _rewarder)
afterReceiptTokenTransfer
nonpayablefunction afterReceiptTokenTransfer(address _from, address _to, uint256 _amount)
beforeReceiptTokenTransfer
nonpayablefunction beforeReceiptTokenTransfer(address _from, address _to, uint256 _amount)
createNoReceiptPool
nonpayablefunction createNoReceiptPool(uint256 _allocPoint, address _stakingToken, address _rewarder)
createPool
nonpayablefunction createPool(uint256 _allocPoint, address _stakingToken, address _rewardQueuer, uint256 _duration, string _receiptName, string _receiptSymbol)
createRewarder
nonpayablefunction createRewarder(address _receiptToken, address _rewardDistributor, uint256 _duration) returns (address)
deposit
nonpayablefunction deposit(address _stakingToken, uint256 _amount)
depositFor
nonpayablefunction depositFor(address _stakingToken, address _for, uint256 _amount)
depositMListaSVFor
nonpayablefunction depositMListaSVFor(uint256 _amount, address _for)
depositVlListapieFor
nonpayablefunction depositVlListapieFor(uint256 _amount, address _for)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
massUpdatePools
nonpayablefunction massUpdatePools()
multiclaim
nonpayablefunction multiclaim(address[] _stakingTokens)
multiclaimFor
nonpayablefunction multiclaimFor(address[] _stakingTokens, address[][] _rewardTokens, address _account)
multiclaimSpec
nonpayablefunction multiclaimSpec(address[] _stakingTokens, address[][] _rewardTokens)
multiclaimSpecLtp
nonpayablefunction multiclaimSpecLtp(address[] _stakingTokens, address[][] _rewardTokens, bool _withLtp)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
set
nonpayablefunction set(address _stakingToken, uint256 _allocPoint, address _rewarder)
setLegacyRewarder
nonpayablefunction setLegacyRewarder(address _stakingToken, address _legacyRewarder)
setListapie
nonpayablefunction setListapie(address _listapie)
setMListaSV
nonpayablefunction setMListaSV(address _mListaSV)
setPoolManager
nonpayablefunction setPoolManager(address _account, bool _allowedManager)
setVlListapie
nonpayablefunction setVlListapie(address _vlListapie)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateEmissionRate
nonpayablefunction updateEmissionRate(uint256 _listapiePerSec)
updatePool
nonpayablefunction updatePool(address _stakingToken)
updatePoolsAlloc
nonpayablefunction updatePoolsAlloc(address[] _stakingTokens, uint256[] _allocPoints)
updateRewarderQueuer
nonpayablefunction updateRewarderQueuer(address _rewarder, address _manager, bool _allowed)
withdraw
nonpayablefunction withdraw(address _stakingToken, uint256 _amount)
withdrawMListaSVFor
nonpayablefunction withdrawMListaSVFor(uint256 _amount, address _for)
withdrawVlListapieFor
nonpayablefunction withdrawVlListapieFor(uint256 _amount, address _for)
events
Add
event Add(uint256 _allocPoint, address indexed _stakingToken, address indexed _receiptToken, address indexed _rewarder)
Deposit
event Deposit(address indexed _user, address indexed _stakingToken, address indexed _receiptToken, uint256 _amount)
DepositNotAvailable
event DepositNotAvailable(address indexed _user, address indexed _stakingToken, uint256 _amount)
HarvestListapie
event HarvestListapie(address indexed _account, address indexed _receiver, uint256 _amount, bool isLock)
Initialized
event Initialized(uint8 version)
LegacyRewarderSet
event LegacyRewarderSet(address _stakingToken, address _legacyRewarder)
ListapieSet
event ListapieSet(address _listapie)
mListaSVUpdated
event mListaSVUpdated(address _newMListaSV, address _oldMListaSV)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PoolManagerStatus
event PoolManagerStatus(address _account, bool _status)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Set
event Set(address indexed _stakingToken, uint256 _allocPoint, address indexed _rewarder)
Unpaused
event Unpaused(address account)
UpdateEmissionRate
event UpdateEmissionRate(address indexed _user, uint256 _oldListapiePerSec, uint256 _newListapiePerSec)
UpdatePool
event UpdatePool(address indexed _stakingToken, uint256 _lastRewardTimestamp, uint256 _lpSupply, uint256 _accListapiePerShare)
UpdatePoolAlloc
event UpdatePoolAlloc(address _stakingToken, uint256 _oldAllocPoint, uint256 _newAllocPoint)
VlListapieUpdated
event VlListapieUpdated(address _newvlListapie, address _oldvlListapie)
Withdraw
event Withdraw(address indexed _user, address indexed _stakingToken, address indexed _receiptToken, uint256 _amount)
errors
InvalidStakingToken
error InvalidStakingToken()
LengthMismatch
error LengthMismatch()
ListapieSetAlready
error ListapieSetAlready()
MustBeContract
error MustBeContract()
MustBeContractOrZero
error MustBeContractOrZero()
OnlyActivePool
error OnlyActivePool()
OnlyMListaSV
error OnlyMListaSV()
OnlyPoolManager
error OnlyPoolManager()
OnlyReceiptToken
error OnlyReceiptToken()
OnlyVlListapie
error OnlyVlListapie()
PoolExisted
error PoolExisted()
UnlockAmountExceedsLocked
error UnlockAmountExceedsLocked()
WithdrawAmountExceedsStaked
error WithdrawAmountExceedsStaked()
creation bytecode
0x608060405234801562000010575f80fd5b506200001b62000021565b620000df565b5f54610100900460ff16156200008d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614620000dd575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b614fa580620000ed5f395ff3fe608060405234801561000f575f80fd5b50600436106103a9575f3560e01c80636d687fed116101ea578063a217fddf11610114578063cf94fdf5116100a9578063ecd2e12211610079578063ecd2e1221461098f578063f0e4742f146109a2578063f2fde38b146109b6578063f3fef3a3146109c9575f80fd5b8063cf94fdf51461093d578063d547741f14610950578063dab7a27214610963578063e6fd48bc14610985575f80fd5b8063c78f7420116100e4578063c78f742014610842578063c9365cd514610904578063c9b7dd8614610917578063caaf15bf1461092a575f80fd5b8063a217fddf146107dc578063a679f5e8146107e3578063ad05e6271461080c578063b3db428b1461082f575f80fd5b80638456cb591161018a5780639a47ce131161015a5780639a47ce13146107905780639c7e2655146107a35780639e2af03e146107b6578063a092d347146107c9575f80fd5b80638456cb591461072c5780638da5cb5b1461073457806391d1485414610745578063921805f51461077d575f80fd5b80637916a55c116101c55780637916a55c146106e05780637b46c54f146106f3578063810ed8901461070657806382dad43414610719575f80fd5b80636d687fed146106a257806370a1198e146106c5578063715018a6146106d8575f80fd5b8063248a9ca3116102d6578063453114631161026b5780635abb225d1161023b5780635abb225d146106695780635c975abb1461067c578063630b5ba11461068757806368e1add11461068f575f80fd5b8063453114631461061157806347e7ef24146106245780634b334fdb146106375780635750ec5314610641575f80fd5b806330f66836116102a657806330f66836146105ba57806336568abe146105e357806337e51e8e146105f65780633f4ba83a14610609575f80fd5b8063248a9ca31461055f578063266f24b7146105815780632bfb9a12146105945780632f2ff15d146105a7575f80fd5b80630bdcaed91161034c5780630f0859351161031c5780630f085935146104ee5780630f208beb1461050257806317caf6f1146105425780631b8f3aae1461054c575f80fd5b80630bdcaed9146104885780630becea8a1461049b5780630e21a7d9146104c65780630e5a6235146104da575f80fd5b806306f821ee1161038757806306f821ee1461042a57806307337f2b1461043f578063081e3eda146104625780630ba84cd214610475575f80fd5b806301ffc9a7146103ad57806305963240146103d557806306bfa938146103f7575b5f80fd5b6103c06103bb36600461411d565b6109dc565b60405190151581526020015b60405180910390f35b6103e86103e3366004614170565b610a74565b6040516103cc939291906142ba565b61040a6104053660046142f2565b610ab6565b6040805194855260208501939093529183015260608201526080016103cc565b61043d61043836600461431a565b610b9e565b005b6103c061044d3660046142f2565b6101386020525f908152604090205460ff1681565b610130545b6040519081526020016103cc565b61043d610483366004614362565b610c29565b61043d610496366004614379565b610c84565b6104ae6104a93660046143c0565b610e84565b6040516001600160a01b0390911681526020016103cc565b610137546104ae906001600160a01b031681565b61012e546104ae906001600160a01b031681565b61012d546104ae906001600160a01b031681565b61040a610510366004614170565b61013360209081525f928352604080842090915290825290208054600182015460028301546003909301549192909184565b6104676101345481565b61043d61055a366004614170565b610f70565b61046761056d366004614362565b5f90815260c9602052604090206001015490565b61043d61058f3660046143fe565b610fff565b61043d6105a23660046142f2565b611068565b61043d6105b5366004614443565b611165565b6104ae6105c83660046142f2565b6101326020525f90815260409020546001600160a01b031681565b61043d6105f1366004614443565b61118e565b61043d6106043660046143c0565b61121a565b61043d611417565b61043d61061f366004614607565b61142c565b61043d61063236600461466b565b611443565b61046761012f5481565b61065461064f366004614170565b61154f565b604080519283526020830191909152016103cc565b61043d6106773660046142f2565b611584565b60fb5460ff166103c0565b61043d6115ff565b61043d61069d3660046143c0565b611654565b6106b56106b0366004614170565b61171a565b6040516103cc9493929190614695565b61043d6106d33660046146d3565b61176c565b61043d611783565b61043d6106ee3660046142f2565b611796565b61043d6107013660046142f2565b611811565b61043d610714366004614443565b611933565b61043d61072736600461473f565b6119ac565b61043d6119c2565b6033546001600160a01b03166104ae565b6103c0610753366004614443565b5f91825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61043d61078b3660046147e7565b6119d4565b61043d61079e36600461487c565b611a93565b6104ae6107b1366004614362565b611c77565b61043d6107c4366004614443565b611ca0565b61043d6107d73660046148e3565b611d10565b6104675f81565b6104ae6107f13660046142f2565b6101396020525f90815260409020546001600160a01b031681565b61081f61081a36600461490f565b611d76565b6040516103cc949392919061493c565b61043d61083d3660046143c0565b611dcb565b6108b76108503660046142f2565b6101316020525f908152604090208054600182015460028301546003840154600485015460058601546006909601546001600160a01b0395861696948616959394929391929181169074010000000000000000000000000000000000000000900460ff1688565b604080516001600160a01b03998a16815297891660208901528701959095526060860193909352608085019190915260a084015290921660c082015290151560e0820152610100016103cc565b61043d610912366004614974565b611edb565b61043d610925366004614443565b612093565b61043d610938366004614443565b612103565b61043d61094b3660046149a8565b612172565b61043d61095e366004614443565b6121d9565b61097661097136600461490f565b6121fd565b6040516103cc939291906149e7565b6104676101355481565b61043d61099d366004614a18565b612242565b610136546104ae906001600160a01b031681565b61043d6109c43660046142f2565b612258565b61043d6109d736600461466b565b6122e5565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610a6e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6001600160a01b038083165f908152610139602052604090205460609182918291168015610aae57610aa681866123e1565b919550935091505b509250925092565b6001600160a01b038181165f9081526101316020908152604080832081516101008101835281548616815260018201548616938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a08301526006015492831660c08201527401000000000000000000000000000000000000000090920460ff16151560e083015261013454909182918291829115610b7f5761013454816040015161012f54610b709190614ab1565b610b7a9190614ac8565b610b81565b5f5b604082015160a09092015161013454919892975095509350915050565b5f610ba8816124ea565b6040517f71daff750000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015283151560248301528591908216906371daff75906044015f604051808303815f87803b158015610c0c575f80fd5b505af1158015610c1e573d5f803e3d5ffd5b505050505050505050565b5f610c33816124ea565b610c3b6115ff565b61012f805490839055604080518281526020810185905233917f1d75b4af369dd9c67d43994eea5f98a89dcaa2d64156061ae12a4eaaeb43ff08910160405180910390a2505050565b5f54610100900460ff1615808015610ca257505f54600160ff909116105b80610cbb5750303b158015610cbb57505f5460ff166001145b610d325760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b5f805460ff191660011790558015610d70575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610d786124f4565b610d80612578565b610d886125fc565b610da35f610d9e6033546001600160a01b031690565b612680565b61012d80546001600160a01b038781167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925561012f869055610135859055610137805485841692169190911790555f610134819055603354909116815261013860205260409020805460ff191660011790558015610e7d575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b5f7fd05c121bd204ee83263f42e2e5a9d323d11cbde2cafa2c43a6b9e851a3ee1226610eaf816124ea565b610137546040517fe55658140000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03808716602483015280881660448301526064820186905290911660848201525f907336d2ec4ea01504403e0f3a223dc213822cfdba549063e55658149060a401602060405180830381865af4158015610f42573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f669190614b00565b9695505050505050565b5f610f7a816124ea565b6001600160a01b038381165f818152610139602090815260409182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948716948517905581519283528201929092527fca830abe8976ed58c82d6a0ef98a60b617d28e3e35bc849d471c131868dc9d2391015b60405180910390a1505050565b335f908152610138602052604090205460ff1615801561101f5750333014155b15611056576040517ff655705d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61106284848484612720565b50505050565b5f611072816124ea565b61012d546001600160a01b0316156110b6576040517f0d6716bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382163b6110f7576040517fcc8ea4f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61012d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040519081527f92be5a7f88110b3d3a59067abdd34213d81972a5772d7aeabab5f79e9d6b89609060200160405180910390a15050565b5f82815260c9602052604090206001015461117f816124ea565b6111898383612680565b505050565b6001600160a01b038116331461120c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610d29565b6112168282612aa7565b5050565b335f81815261013260209081526040808320546001600160a01b039081168085526101319093529220600101549092911614611282576040517f9ed2ad3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f90815261013260209081526040808320546001600160a01b0390811680855261013190935292209091861615611329576001600160a01b038083165f90815261013360209081526040808320938a1683529290522080546112e6908690614b1b565b815560028101546112f8908690614b1b565b60028201556004820154815464e8d4a510009161131491614ab1565b61131e9190614ac8565b60019091015561135a565b6001600160a01b0382165f908152610131602052604081206005018054869290611354908490614b2e565b90915550505b6001600160a01b038516156113de576001600160a01b038083165f90815261013360209081526040808320938916835292905220805461139b908690614b2e565b815560028101546113ad908690614b2e565b60028201556004820154815464e8d4a51000916113c991614ab1565b6113d39190614ac8565b60019091015561140f565b6001600160a01b0382165f908152610131602052604081206005018054869290611409908490614b1b565b90915550505b505050505050565b5f611421816124ea565b611429612b28565b50565b611434612b7a565b61118983833333856001612bcd565b61144b612b7a565b611453612d54565b6001600160a01b038281165f908152610131602052604090819020600181015491517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015260248101859052909291909116906340c10f19906044015f604051808303815f87803b1580156114cc575f80fd5b505af11580156114de573d5f803e3d5ffd5b505082546114fa92506001600160a01b03169050333085612dad565b60018101546040518381526001600160a01b039182169185169033907f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96906020015b60405180910390a4506112166001606555565b6001600160a01b038281165f9081526101336020908152604080832093851683529290522080546002909101545b9250929050565b5f61158e816124ea565b61013680546001600160a01b038481167fffffffffffffffffffffffff00000000000000000000000000000000000000008316811790935560408051938452911660208301819052917fe2fddff5190e8d4d88a95555e6db5b4757c2c0bbf804cce0f4ad4207227b14ce9101610ff2565b611607612b7a565b5f5b6101305481101561142957611644610130828154811061162b5761162b614b41565b5f918252602090912001546001600160a01b0316611811565b61164d81614b6e565b9050611609565b335f81815261013260209081526040808320546001600160a01b0390811680855261013190935292206001015490929116146116bc576040517f9ed2ad3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f90815261013260205260409020546001600160a01b03166116de81611811565b6001600160a01b038516156116f7576116f78186612e65565b836001600160a01b0316856001600160a01b031614610e7d57610e7d8185612e65565b6001600160a01b0382165f90815261013160205260408120606090819081906117438787612ea4565b600682015490955061175e906001600160a01b0316876123e1565b969991985096509350505050565b611774612b7a565b61106284848384866001612bcd565b61178b612fb3565b6117945f61300d565b565b5f6117a0816124ea565b61012e80546001600160a01b038481167fffffffffffffffffffffffff00000000000000000000000000000000000000008316811790935560408051938452911660208301819052917fedb90cf85f5d53f9a6133de595e3eea3b677ccdad3f4ca5ce12871ef9570c9219101610ff2565b611819612b7a565b6001600160a01b0381165f90815261013160205260409020600381015442111580611845575061013454155b1561184e575050565b60058101545f81900361186657504260039091015550565b5f8260030154426118779190614b1b565b90505f61013454846002015461012f54846118929190614ab1565b61189c9190614ab1565b6118a69190614ac8565b9050826118b88264e8d4a51000614ab1565b6118c29190614ac8565b84600401546118d19190614b2e565b60048501819055426003860181905560408051918252602082018690528101919091526001600160a01b038616907f50a1a2d4fcb1c08863a0b14fcc7d9d728e2b21d8d7588b9cfa3991efe8112ee79060600160405180910390a25050505050565b61193b612b7a565b611943612d54565b610136546001600160a01b03163314611988576040517fcac1be9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610136546119a2906001600160a01b031682846001613076565b6112166001606555565b5f6119b6816124ea565b61106284848585612720565b5f6119cc816124ea565b611429613228565b5f6119de816124ea565b6040517f89bd7cab0000000000000000000000000000000000000000000000000000000081525f907336d2ec4ea01504403e0f3a223dc213822cfdba54906389bd7cab90611a38908a90309086908a908a90600401614ba5565b602060405180830381865af4158015611a53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a779190614b00565b90505f611a85828888610e84565b9050610c1e89898484612720565b5f611a9d816124ea565b611aa56115ff565b838214611ade576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561140f575f6101315f888885818110611aff57611aff614b41565b9050602002016020810190611b1491906142f2565b6001600160a01b03166001600160a01b031681526020019081526020015f20600201549050848483818110611b4b57611b4b614b41565b905060200201358161013454611b619190614b1b565b611b6b9190614b2e565b61013455848483818110611b8157611b81614b41565b905060200201356101315f898986818110611b9e57611b9e614b41565b9050602002016020810190611bb391906142f2565b6001600160a01b0316815260208101919091526040015f20600201557f9d1e399e9f825d6a92c706d1784017e4e9e8c44116b04bf9d7b3dcffa37eddc8878784818110611c0257611c02614b41565b9050602002016020810190611c1791906142f2565b82878786818110611c2a57611c2a614b41565b90506020020135604051611c5c939291906001600160a01b039390931683526020830191909152604082015260600190565b60405180910390a15080611c6f81614b6e565b915050611ae0565b6101308181548110611c87575f80fd5b5f918252602090912001546001600160a01b0316905081565b611ca8612b7a565b611cb0612d54565b61012e546001600160a01b03163314611cf5576040517f014df72600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61012e546119a2906001600160a01b03163383856001613265565b5f611d1a816124ea565b6001600160a01b0383165f8181526101386020908152604091829020805460ff19168615159081179091558251938452908301527f26b10598e51169a6f63965086cafd8665e54b0ff538233804909efe8d5c5810d9101610ff2565b6001600160a01b0383165f9081526101316020526040812081906060908290611d9f8888612ea4565b6006820154909550611dbb906001600160a01b031688886133d9565b969a919950975094955050505050565b611dd3612b7a565b611ddb612d54565b6001600160a01b038381165f908152610131602052604090819020600181015491517f40c10f19000000000000000000000000000000000000000000000000000000008152858416600482015260248101859052909291909116906340c10f19906044015f604051808303815f87803b158015611e56575f80fd5b505af1158015611e68573d5f803e3d5ffd5b50508254611e8492506001600160a01b03169050333085612dad565b60018101546040518381526001600160a01b039182169186811691908616907f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969060200160405180910390a4506111896001606555565b7fd05c121bd204ee83263f42e2e5a9d323d11cbde2cafa2c43a6b9e851a3ee1226611f05816124ea565b6001600160a01b0382163b158015611f2557506001600160a01b03821615155b15611f5c576040517fb66f944700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384165f908152610131602052604090206006015474010000000000000000000000000000000000000000900460ff16611fc9576040517fd464b7b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611fd16115ff565b6001600160a01b0384165f9081526101316020526040902060020154610134548491611ffc91614b1b565b6120069190614b2e565b610134556001600160a01b038481165f81815261013160209081526040918290206002810188905560060180547fffffffffffffffffffffffff000000000000000000000000000000000000000016948716948517905590518681527fdb56252d0d52575e1a437302556b299c2a995c7fd5c619b8efda785dcf597d28910160405180910390a350505050565b61209b612b7a565b6120a3612d54565b610136546001600160a01b031633146120e8576040517fcac1be9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610136546119a2906001600160a01b03163383856001613265565b61210b612b7a565b612113612d54565b61012e546001600160a01b03163314612158576040517f014df72600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61012e546119a2906001600160a01b031682846001613076565b61217a612b7a565b5f8167ffffffffffffffff811115612194576121946144a7565b6040519080825280602002602001820160405280156121c757816020015b60608152602001906001900390816121b25790505b50905061118983833333856001612bcd565b5f82815260c960205260409020600101546121f3816124ea565b6111898383612aa7565b6001600160a01b038084165f908152610139602052604081205490916060918391168015612238576122308187876133d9565b919550935091505b5093509350939050565b61224a612b7a565b611062848433338686612bcd565b612260612fb3565b6001600160a01b0381166122dc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d29565b6114298161300d565b6122ed612b7a565b6122f5612d54565b6001600160a01b038281165f908152610131602052604090819020600181015491517f9dc29fac0000000000000000000000000000000000000000000000000000000081523360048201526024810185905290929190911690639dc29fac906044015f604051808303815f87803b15801561236e575f80fd5b505af1158015612380573d5f803e3d5ffd5b5050825461239b92506001600160a01b031690503384613501565b60018101546040518381526001600160a01b039182169185169033907f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f79060200161153c565b606080806001600160a01b038516156124e357846001600160a01b03166345b507e36040518163ffffffff1660e01b81526004015f60405180830381865afa15801561242f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124569190810190614cbf565b6040517f52146cdb0000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152929550909350908616906352146cdb906024015f60405180830381865afa1580156124b9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124e09190810190614d7e565b90505b9250925092565b611429813361354a565b5f54610100900460ff166125705760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d29565b6117946135be565b5f54610100900460ff166125f45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d29565b611794613643565b5f54610100900460ff166126785760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d29565b6117946136bf565b5f82815260c9602090815260408083206001600160a01b038516845290915290205460ff16611216575f82815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556126dc3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6001600160a01b0383163b158061273f57506001600160a01b0382163b155b15612776576040517f60e099fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381163b15801561279657506001600160a01b03811615155b156127cd576040517fb66f944700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383165f908152610131602052604090206006015474010000000000000000000000000000000000000000900460ff161561283b576040517f6d3acfdd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128436115ff565b5f6101355442116128575761013554612859565b425b9050846101345461286a9190614b2e565b6101348190555061013084908060018154018082558091505060019003905f5260205f20015f9091909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550604051806101000160405280856001600160a01b03168152602001846001600160a01b031681526020018681526020018281526020015f81526020015f8152602001836001600160a01b03168152602001600115158152506101315f866001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506020820151816001015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e08201518160060160146101000a81548160ff021916908315150217905550905050836101325f856001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316836001600160a01b0316856001600160a01b03167f224e1c56d5a095bbae2a37104ca3c43212f7580c6ebb1b6b9ea1fb3eebb42e7c88604051612a9891815260200190565b60405180910390a45050505050565b5f82815260c9602090815260408083206001600160a01b038516845290915290205460ff1615611216575f82815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b612b30613747565b60fb805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60fb5460ff16156117945760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d29565b612bd5612d54565b815185908114612c11576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805b82811015612d2f575f898983818110612c2f57612c2f614b41565b9050602002016020810190612c4491906142f2565b6001600160a01b038082165f90815261013360209081526040808320938d16835292905220909150612c7582611811565b5f8160030154612c85848c613799565b612c8f9190614b2e565b90508615612cae57612ca18186614b2e565b5f60038401559450612cb6565b600382018190555b6001600160a01b0383165f9081526101316020526040902060040154825464e8d4a5100091612ce491614ab1565b612cee9190614ac8565b8260010181905550612d1b838b8b8b8881518110612d0e57612d0e614b41565b602002602001015161380c565b50505080612d2890614b6e565b9050612c14565b5082612d3c575050612d4a565b612d47868683613a6b565b50505b61140f6001606555565b600260655403612da65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d29565b6002606555565b6040516001600160a01b03808516602483015283166044820152606481018290526110629085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613adc565b6001606555565b6001600160a01b038083165f908152610133602090815260408083209385168352929052205415612e9a57612e9a8282613bc2565b6112168282613c16565b6001600160a01b038083165f90815261013160209081526040808320610133835281842094861684529390915281206004830154600384015492939242118015612ef15750600583015415155b8015612eff57506101345415155b15612f74575f836003015442612f159190614b1b565b90505f61013454856002015461012f5484612f309190614ab1565b612f3a9190614ab1565b612f449190614ac8565b6005860154909150612f5b8264e8d4a51000614ab1565b612f659190614ac8565b612f6f9084614b2e565b925050505b6001820154825464e8d4a5100090612f8d908490614ab1565b612f979190614ac8565b612fa19190614b1b565b9350816003015484610f669190614b2e565b6033546001600160a01b031633146117945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d29565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038085165f9081526101316020908152604080832061013383528184209488168452939091529020821580156130b65750838160020154105b156130ed576040517fe997875500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054841180156130fa5750825b15613131576040517fef4832a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61313a86611811565b6131448686612e65565b8054613151908590614b1b565b815582613193578381600201546131689190614b1b565b60028201556001600160a01b038087165f908152610131602052604090205461319391163386613501565b6004820154815464e8d4a51000916131aa91614ab1565b6131b49190614ac8565b816001018190555083826005015f8282546131cf9190614b1b565b909155505060018201546040518581526001600160a01b039182169188811691908816907f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f79060200160405180910390a4505050505050565b613230612b7a565b60fb805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612b5d3390565b6001600160a01b038086165f908152610131602090815260408083206101338352818420948816845293909152902061329d87611811565b6132a78786612e65565b80546132b4908590614b2e565b8155826132e7578381600201546132cb9190614b2e565b600282015581546132e7906001600160a01b0316873087612dad565b6004820154815464e8d4a51000916132fe91614ab1565b6133089190614ac8565b600182015583156133d05783826005015f8282546133269190614b2e565b909155508390506133825760018201546040518581526001600160a01b039182169189811691908816907f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969060200160405180910390a46133d0565b866001600160a01b0316856001600160a01b03167f6d0456143026caba846332ec09535fc3171dcd0c340cf99ad1668e75bfc1c7c8866040516133c791815260200190565b60405180910390a35b50505050505050565b5f6060816001600160a01b038616158015906133fd57506001600160a01b03841615155b156134f85783846001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561343e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134659190810190614dff565b6040517f211dc32d0000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301529295509093509087169063211dc32d90604401602060405180830381865afa1580156134d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134f59190614e31565b90505b93509350939050565b6040516001600160a01b0383166024820152604481018290526111899084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612dfa565b5f82815260c9602090815260408083206001600160a01b038516845290915290205460ff166112165761357c81613d40565b613587836020613d52565b604051602001613598929190614e48565b60408051601f198184030181529082905262461bcd60e51b8252610d2991600401614ec8565b5f54610100900460ff1661363a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d29565b6117943361300d565b5f54610100900460ff16612e5e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d29565b5f54610100900460ff1661373b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d29565b60fb805460ff19169055565b60fb5460ff166117945760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610d29565b6001600160a01b038083165f81815261013360209081526040808320948616835293815283822060018101549383526101319091529281206004015483549193928492909164e8d4a51000916137ef9190614ab1565b6137f99190614ac8565b6138039190614b1b565b95945050505050565b6001600160a01b038085165f908152610131602052604090206006015416801561393e578151156138b2576040517f69795e930000000000000000000000000000000000000000000000000000000081526001600160a01b038216906369795e939061388090879087908790600401614eda565b5f604051808303815f87803b158015613897575f80fd5b505af11580156138a9573d5f803e3d5ffd5b5050505061393e565b6040517f6b0916950000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301528481166024830152821690636b091695906044016020604051808303815f875af1158015613918573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061393c9190614f05565b505b6001600160a01b038086165f908152610139602052604090205416801561140f578251156139e1576040517f69795e930000000000000000000000000000000000000000000000000000000081526001600160a01b038216906369795e93906139af90889088908890600401614eda565b5f604051808303815f87803b1580156139c6575f80fd5b505af11580156139d8573d5f803e3d5ffd5b5050505061140f565b6040517f6b0916950000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301528581166024830152821690636b091695906044016020604051808303815f875af1158015613a47573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133d09190614f05565b805f03613a7757505050565b61012d54613a8f906001600160a01b03168383613501565b604080518281525f60208201526001600160a01b0380851692908616917fad3a96b192a2d844594c8d63147cca19f023f8d771c59f5ee6eea3b89b58ce0d910160405180910390a3505050565b5f613b30826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613f7c9092919063ffffffff16565b905080515f1480613b50575080806020019051810190613b509190614f05565b6111895760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610d29565b5f613bcd8383613799565b6001600160a01b038085165f90815261013360209081526040808320938716835292905290812060030180549293508392909190613c0c908490614b2e565b9091555050505050565b6001600160a01b038083165f9081526101316020526040902060060154168015613caa576040517f0e0a59680000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152821690630e0a5968906024015f604051808303815f87803b158015613c93575f80fd5b505af1158015613ca5573d5f803e3d5ffd5b505050505b6001600160a01b038084165f9081526101396020526040902054168015611062576040517f0e0a59680000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152821690630e0a5968906024015f604051808303815f87803b158015613d24575f80fd5b505af1158015613d36573d5f803e3d5ffd5b5050505050505050565b6060610a6e6001600160a01b03831660145b60605f613d60836002614ab1565b613d6b906002614b2e565b67ffffffffffffffff811115613d8357613d836144a7565b6040519080825280601f01601f191660200182016040528015613dad576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f81518110613de357613de3614b41565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613e4557613e45614b41565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f613e7f846002614ab1565b613e8a906001614b2e565b90505b6001811115613f26577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110613ecb57613ecb614b41565b1a60f81b828281518110613ee157613ee1614b41565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060049490941c93613f1f81614f20565b9050613e8d565b508315613f755760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d29565b9392505050565b6060613f8a84845f85613f92565b949350505050565b60608247101561400a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610d29565b5f80866001600160a01b031685876040516140259190614f54565b5f6040518083038185875af1925050503d805f811461405f576040519150601f19603f3d011682016040523d82523d5f602084013e614064565b606091505b509150915061407587838387614080565b979650505050505050565b606083156140ee5782515f036140e7576001600160a01b0385163b6140e75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d29565b5081613f8a565b613f8a83838151156141035781518083602001fd5b8060405162461bcd60e51b8152600401610d299190614ec8565b5f6020828403121561412d575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613f75575f80fd5b6001600160a01b0381168114611429575f80fd5b5f8060408385031215614181575f80fd5b823561418c8161415c565b9150602083013561419c8161415c565b809150509250929050565b5f8151808452602080850194508084015f5b838110156141de5781516001600160a01b0316875295820195908201906001016141b9565b509495945050505050565b5f5b838110156142035781810151838201526020016141eb565b50505f910152565b5f81518084526142228160208601602086016141e9565b601f01601f19169290920160200192915050565b5f82825180855260208086019550808260051b8401018186015f5b8481101561427f57601f1986840301895261426d83835161420b565b98840198925090830190600101614251565b5090979650505050505050565b5f8151808452602080850194508084015f5b838110156141de5781518752958201959082019060010161429e565b606081525f6142cc60608301866141a7565b82810360208401526142de8186614236565b90508281036040840152610f66818561428c565b5f60208284031215614302575f80fd5b8135613f758161415c565b8015158114611429575f80fd5b5f805f6060848603121561432c575f80fd5b83356143378161415c565b925060208401356143478161415c565b915060408401356143578161430d565b809150509250925092565b5f60208284031215614372575f80fd5b5035919050565b5f805f806080858703121561438c575f80fd5b84356143978161415c565b9350602085013592506040850135915060608501356143b58161415c565b939692955090935050565b5f805f606084860312156143d2575f80fd5b83356143dd8161415c565b925060208401356143ed8161415c565b929592945050506040919091013590565b5f805f8060808587031215614411575f80fd5b8435935060208501356144238161415c565b925060408501356144338161415c565b915060608501356143b58161415c565b5f8060408385031215614454575f80fd5b82359150602083013561419c8161415c565b5f8083601f840112614476575f80fd5b50813567ffffffffffffffff81111561448d575f80fd5b6020830191508360208260051b850101111561157d575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156144fd576144fd6144a7565b604052919050565b5f67ffffffffffffffff82111561451e5761451e6144a7565b5060051b60200190565b5f82601f830112614537575f80fd5b8135602061454c61454783614505565b6144d4565b828152600592831b850182019282820191908785111561456a575f80fd5b8387015b8581101561427f57803567ffffffffffffffff81111561458d575f8081fd5b8801603f81018a1361459e575f8081fd5b8581013560406145b061454783614505565b82815291851b8301810191888101908d8411156145cc575f8081fd5b938201935b838510156145f657843592506145e68361415c565b82825293890193908901906145d1565b88525050509385019350840161456e565b5f805f60408486031215614619575f80fd5b833567ffffffffffffffff80821115614630575f80fd5b61463c87838801614466565b90955093506020860135915080821115614654575f80fd5b5061466186828701614528565b9150509250925092565b5f806040838503121561467c575f80fd5b82356146878161415c565b946020939093013593505050565b848152608060208201525f6146ad60808301866141a7565b82810360408401526146bf8186614236565b90508281036060840152614075818561428c565b5f805f80606085870312156146e6575f80fd5b843567ffffffffffffffff808211156146fd575f80fd5b61470988838901614466565b90965094506020870135915080821115614721575f80fd5b5061472e87828801614528565b92505060408501356143b58161415c565b5f805f60608486031215614751575f80fd5b8335925060208401356147638161415c565b915060408401356143578161415c565b5f67ffffffffffffffff82111561478c5761478c6144a7565b50601f01601f191660200190565b5f82601f8301126147a9575f80fd5b81356147b761454782614773565b8181528460208386010111156147cb575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060c087890312156147fc575f80fd5b86359550602087013561480e8161415c565b9450604087013561481e8161415c565b935060608701359250608087013567ffffffffffffffff80821115614841575f80fd5b61484d8a838b0161479a565b935060a0890135915080821115614862575f80fd5b5061486f89828a0161479a565b9150509295509295509295565b5f805f806040858703121561488f575f80fd5b843567ffffffffffffffff808211156148a6575f80fd5b6148b288838901614466565b909650945060208701359150808211156148ca575f80fd5b506148d787828801614466565b95989497509550505050565b5f80604083850312156148f4575f80fd5b82356148ff8161415c565b9150602083013561419c8161430d565b5f805f60608486031215614921575f80fd5b833561492c8161415c565b925060208401356147638161415c565b8481526001600160a01b0384166020820152608060408201525f614963608083018561420b565b905082606083015295945050505050565b5f805f60608486031215614986575f80fd5b83356149918161415c565b92506020840135915060408401356143578161415c565b5f80602083850312156149b9575f80fd5b823567ffffffffffffffff8111156149cf575f80fd5b6149db85828601614466565b90969095509350505050565b6001600160a01b0384168152606060208201525f614a08606083018561420b565b9050826040830152949350505050565b5f805f8060608587031215614a2b575f80fd5b843567ffffffffffffffff80821115614a42575f80fd5b614a4e88838901614466565b90965094506020870135915080821115614a66575f80fd5b50614a7387828801614528565b92505060408501356143b58161430d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610a6e57610a6e614a84565b5f82614afb577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215614b10575f80fd5b8151613f758161415c565b81810381811115610a6e57610a6e614a84565b80820180821115610a6e57610a6e614a84565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b9e57614b9e614a84565b5060010190565b5f6001600160a01b038088168352808716602084015280861660408401525060a06060830152614bd860a083018561420b565b8281036080840152614bea818561420b565b98975050505050505050565b5f82601f830112614c05575f80fd5b8151614c1361454782614773565b818152846020838601011115614c27575f80fd5b613f8a8260208301602087016141e9565b5f82601f830112614c47575f80fd5b81516020614c5761454783614505565b82815260059290921b84018101918181019086841115614c75575f80fd5b8286015b84811015614cb457805167ffffffffffffffff811115614c98575f8081fd5b614ca68986838b0101614bf6565b845250918301918301614c79565b509695505050505050565b5f8060408385031215614cd0575f80fd5b825167ffffffffffffffff80821115614ce7575f80fd5b818501915085601f830112614cfa575f80fd5b81516020614d0a61454783614505565b82815260059290921b84018101918181019089841115614d28575f80fd5b948201945b83861015614d4f578551614d408161415c565b82529482019490820190614d2d565b91880151919650909350505080821115614d67575f80fd5b50614d7485828601614c38565b9150509250929050565b5f6020808385031215614d8f575f80fd5b825167ffffffffffffffff811115614da5575f80fd5b8301601f81018513614db5575f80fd5b8051614dc361454782614505565b81815260059190911b82018301908381019087831115614de1575f80fd5b928401925b8284101561407557835182529284019290840190614de6565b5f60208284031215614e0f575f80fd5b815167ffffffffffffffff811115614e25575f80fd5b613f8a84828501614bf6565b5f60208284031215614e41575f80fd5b5051919050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f8351614e7f8160178501602088016141e9565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351614ebc8160288401602088016141e9565b01602801949350505050565b602081525f613f75602083018461420b565b5f6001600160a01b0380861683528085166020840152506060604083015261380360608301846141a7565b5f60208284031215614f15575f80fd5b8151613f758161430d565b5f81614f2e57614f2e614a84565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8251614f658184602087016141e9565b919091019291505056fea26469706673582212205002eecede87b723b7eb43b9f4d50cac5382bd3b7a057e2cab0170a8e2583e6c64736f6c63430008150033