6 txs
99 calls
constructor
constructor(address _owner, address[] _rewardTokens, address[] _rewardManagers, uint256[] _rewardRates, address[] _gaugeControllers, address[] _rewardDistributors, address _stakingToken)
functions
calcCurCombinedWeight
viewfunction calcCurCombinedWeight(address account) view returns (uint256 old_combined_weight, uint256 new_vefxs_multiplier, uint256 new_combined_weight)
calcCurrLockMultiplier
viewfunction calcCurrLockMultiplier(address account, uint256 stake_idx) view returns (uint256 midpoint_lock_multiplier)
combinedWeightOf
viewfunction combinedWeightOf(address account) view returns (uint256)
curvePool
viewfunction curvePool() view returns (address)
curveToken
viewfunction curveToken() view returns (address)
earned
viewfunction earned(address account) view returns (uint256[] new_earned)
fraxPerLPStored
viewfunction fraxPerLPStored() view returns (uint256)
fraxPerLPToken
viewfunction fraxPerLPToken() view returns (uint256 frax_per_lp_token)
getAllRewardTokens
viewfunction getAllRewardTokens() view returns (address[])
getProxyFor
viewfunction getProxyFor(address addr) view returns (address)
getRewardForDuration
viewfunction getRewardForDuration() view returns (uint256[] rewards_per_duration_arr)
isTokenManagerFor
viewfunction isTokenManagerFor(address caller_addr, address reward_token_addr) view returns (bool)
lastRewardClaimTime
viewfunction lastRewardClaimTime(address) view returns (uint256)
lastUpdateTime
viewfunction lastUpdateTime() view returns (uint256)
lock_max_multiplier
viewfunction lock_max_multiplier() view returns (uint256)
lock_time_for_max_multiplier
viewfunction lock_time_for_max_multiplier() view returns (uint256)
lock_time_min
viewfunction lock_time_min() view returns (uint256)
lockedLiquidityOf
viewfunction lockedLiquidityOf(address account) view returns (uint256)
lockedStakes
viewfunction lockedStakes(address, uint256) view returns (bytes32 kek_id, uint256 start_timestamp, uint256 liquidity, uint256 ending_timestamp, uint256 lock_multiplier)
lockedStakesOf
viewfunction lockedStakesOf(address account) view returns (tuple[])
lockedStakesOfLength
viewfunction lockedStakesOfLength(address account) view returns (uint256)
lockMultiplier
viewfunction lockMultiplier(uint256 secs) view returns (uint256)
maxLPForMaxBoost
viewfunction maxLPForMaxBoost(address account) view returns (uint256)
minVeFXSForMaxBoost
viewfunction minVeFXSForMaxBoost(address account) view returns (uint256)
minVeFXSForMaxBoostProxy
viewfunction minVeFXSForMaxBoostProxy(address proxy_address) view returns (uint256)
nominatedOwner
viewfunction nominatedOwner() view returns (address)
owner
viewfunction owner() view returns (address)
periodFinish
viewfunction periodFinish() view returns (uint256)
proxy_lp_balances
viewfunction proxy_lp_balances(address) view returns (uint256)
proxyStakedFrax
viewfunction proxyStakedFrax(address proxy_address) view returns (uint256)
rewardManagers
viewfunction rewardManagers(address) view returns (address)
rewardRates
viewfunction rewardRates(uint256 token_idx) view returns (uint256 rwd_rate)
rewardsDuration
viewfunction rewardsDuration() view returns (uint256)
rewardsPerToken
viewfunction rewardsPerToken() view returns (uint256[] newRewardsPerTokenStored)
rewardTokenAddrToIdx
viewfunction rewardTokenAddrToIdx(address) view returns (uint256)
staker_designated_proxies
viewfunction staker_designated_proxies(address) view returns (address)
stakesUnlocked
viewfunction stakesUnlocked() view returns (bool)
stakingToken
viewfunction stakingToken() view returns (address)
totalCombinedWeight
viewfunction totalCombinedWeight() view returns (uint256)
totalLiquidityLocked
viewfunction totalLiquidityLocked() view returns (uint256)
userStakedFrax
viewfunction userStakedFrax(address account) view returns (uint256)
vefxs_boost_scale_factor
viewfunction vefxs_boost_scale_factor() view returns (uint256)
vefxs_max_multiplier
viewfunction vefxs_max_multiplier() view returns (uint256)
vefxs_per_frax_for_max_boost
viewfunction vefxs_per_frax_for_max_boost() view returns (uint256)
veFXSMultiplier
viewfunction veFXSMultiplier(address account) view returns (uint256 vefxs_multiplier)
acceptOwnership
nonpayablefunction acceptOwnership()
changeTokenManager
nonpayablefunction changeTokenManager(address reward_token_address, address new_manager_address)
getReward
nonpayablefunction getReward(address destination_address) returns (uint256[])
getReward2
nonpayablefunction getReward2(address destination_address, bool claim_extra_too) returns (uint256[])
getRewardExtraLogic
nonpayablefunction getRewardExtraLogic(address destination_address)
lockAdditional
nonpayablefunction lockAdditional(bytes32 kek_id, uint256 addl_liq)
lockLonger
nonpayablefunction lockLonger(bytes32 kek_id, uint256 new_ending_ts)
nominateNewOwner
nonpayablefunction nominateNewOwner(address _owner)
proxyToggleStaker
nonpayablefunction proxyToggleStaker(address staker_address)
recoverERC20
nonpayablefunction recoverERC20(address tokenAddress, uint256 tokenAmount)
setMiscVariables
nonpayablefunction setMiscVariables(uint256[6] _misc_vars)
setPauses
nonpayablefunction setPauses(bool _stakingPaused, bool _withdrawalsPaused, bool _rewardsCollectionPaused, bool _collectRewardsOnWithdrawalPaused)
setRewardVars
nonpayablefunction setRewardVars(address reward_token_address, uint256 _new_rate, address _gauge_controller_address, address _rewards_distributor_address)
stakeLocked
nonpayablefunction stakeLocked(uint256 liquidity, uint256 secs) returns (bytes32)
stakerSetVeFXSProxy
nonpayablefunction stakerSetVeFXSProxy(address proxy_address)
sync_gauge_weights
nonpayablefunction sync_gauge_weights(bool force_update)
sync
nonpayablefunction sync()
toggleValidVeFXSProxy
nonpayablefunction toggleValidVeFXSProxy(address _proxy_addr)
unlockStakes
nonpayablefunction unlockStakes()
withdrawLocked
nonpayablefunction withdrawLocked(bytes32 kek_id, address destination_address, bool claim_rewards) returns (uint256)
events
LockedAdditional
event LockedAdditional(address indexed user, bytes32 kek_id, uint256 amount)
LockedLonger
event LockedLonger(address indexed user, bytes32 kek_id, uint256 new_secs, uint256 new_start_ts, uint256 new_end_ts)
OwnerChanged
event OwnerChanged(address oldOwner, address newOwner)
OwnerNominated
event OwnerNominated(address newOwner)
RewardPaid
event RewardPaid(address indexed user, uint256 amount, address token_address, address destination_address)
StakeLocked
event StakeLocked(address indexed user, uint256 amount, uint256 secs, bytes32 kek_id, address source_address)
WithdrawLocked
event WithdrawLocked(address indexed user, uint256 liquidity, bytes32 kek_id, address destination_address)
errors
No errors.
creation bytecode
0x6080604052671bc16d674ec800006006556305a39a8060075562091050600855673782dace9d900000600955671bc16d674ec80000600a55673782dace9d900000600b553480156200005057600080fd5b5060405162005788380380620057888339810160408190526200007391620006f7565b86868686868686868686868686856001600160a01b038116620000dc5760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a150600160025584516200014e906010906020880190620004ce565b50815162000164906011906020850190620004ce565b5080516200017a906012906020840190620004ce565b5082516200019090601390602086019062000538565b5060005b85518110156200034e578060156000888481518110620001b857620001b8620007fe565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550600160146000888481518110620001ff57620001ff620007fe565b6020908102919091018101516001600160a01b031682528101919091526040016000908120805460ff191692151592909217909155601680546001810182559082527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289015584518590829081106200027b576200027b620007fe565b6020026020010151600f60008884815181106200029c576200029c620007fe565b6020908102919091018101516001600160a01b03908116835290820192909252604001600090812080546001600160a01b03191693909216929092179055601a805460018181019092557f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e01829055601b8054918201815582527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1015580620003458162000814565b91505062000194565b506022805460ff19169055426005556040805163513872bd60e01b81529051733669c421b77340b2979d1a00a792cc2ee0fce7379163513872bd9160048083019260209291908290030181865afa158015620003ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d491906200083c565b6004819055505050505050505050505050505080602260066101000a8154816001600160a01b0302191690836001600160a01b03160217905550602260069054906101000a90046001600160a01b03166001600160a01b0316634f39059c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000462573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000488919062000856565b602380546001600160a01b03929092166001600160a01b031992831681179091556024805490921617905550506022805460ff60281b19169055506200087b9350505050565b82805482825590600052602060002090810192821562000526579160200282015b828111156200052657825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620004ef565b506200053492915062000576565b5090565b82805482825590600052602060002090810192821562000526579160200282015b828111156200052657825182559160200191906001019062000559565b5b8082111562000534576000815560010162000577565b80516001600160a01b0381168114620005a557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620005eb57620005eb620005aa565b604052919050565b60006001600160401b038211156200060f576200060f620005aa565b5060051b60200190565b600082601f8301126200062b57600080fd5b81516020620006446200063e83620005f3565b620005c0565b82815260059290921b840181019181810190868411156200066457600080fd5b8286015b848110156200068a576200067c816200058d565b835291830191830162000668565b509695505050505050565b600082601f830112620006a757600080fd5b81516020620006ba6200063e83620005f3565b82815260059290921b84018101918181019086841115620006da57600080fd5b8286015b848110156200068a5780518352918301918301620006de565b600080600080600080600060e0888a0312156200071357600080fd5b6200071e886200058d565b60208901519097506001600160401b03808211156200073c57600080fd5b6200074a8b838c0162000619565b975060408a01519150808211156200076157600080fd5b6200076f8b838c0162000619565b965060608a01519150808211156200078657600080fd5b620007948b838c0162000695565b955060808a0151915080821115620007ab57600080fd5b620007b98b838c0162000619565b945060a08a0151915080821115620007d057600080fd5b50620007df8a828b0162000619565b925050620007f060c089016200058d565b905092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b6000600182016200083557634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200084f57600080fd5b5051919050565b6000602082840312156200086957600080fd5b62000874826200058d565b9392505050565b614efd806200088b6000396000f3fe608060405234801561001057600080fd5b50600436106103ea5760003560e01c80637d6ef08e1161021a578063d2010fb411610135578063e1ba95d2116100c8578063f2a8d34911610097578063f77e34d11161007c578063f77e34d1146109a0578063facefb64146109b3578063fff6cae9146109c657600080fd5b8063f2a8d34914610984578063f2caeb1e1461098d57600080fd5b8063e1ba95d214610957578063e7f305821461095f578063ebe2b12b14610972578063f288baf61461097b57600080fd5b8063d7400d5611610104578063d7400d56146108f3578063d9f96e8d14610906578063de1a65511461093c578063e01f62bf1461094f57600080fd5b8063d2010fb4146108b1578063d2fbdc0d146108ba578063d42fc9b4146108cd578063d5e1a9c6146108e057600080fd5b8063aa1d4fce116101ad578063c35438261161017c578063c354382614610856578063c8f33c9114610869578063ca6df29d14610872578063cdc82e80146108a857600080fd5b8063aa1d4fce1461081e578063b85efd0614610827578063b94c4dcb1461083a578063c00007b01461084357600080fd5b80638da5cb5b116101e95780638da5cb5b146107cb57806391cf600a146107eb5780639637927f146107fe578063a0f234761461080b57600080fd5b80637d6ef08e146107585780637f472e54146107775780638980f11f1461078a5780638bad86a71461079d57600080fd5b8063387edc861161030a5780636c430dbb1161029d578063774d4ae71161026c578063774d4ae7146106ef5780637910d17b146107025780637970833e1461071557806379ba50971461075057600080fd5b80636c430dbb146106945780636e27cef9146106b457806370641a36146106bd57806372f702f3146106c557600080fd5b806353a47bb7116102d957806353a47bb7146106445780635bfd92581461066457806364f2c0601461066c578063693392451461067457600080fd5b8063387edc86146105c857806341a16f3f146105db5780634f39059c146106115780634fd2b5361461063157600080fd5b80631face856116103825780632c0c2a0a116103515780632c0c2a0a146105625780632df079f11461057557806336f89af214610588578063386a9525146105be57600080fd5b80631face856146104b1578063218751b2146104c4578063231b68dc1461050957806328408bab1461052c57600080fd5b80631627540c116103be5780631627540c1461046157806317b18c89146104765780631c1f78eb146104895780631e090f011461049157600080fd5b80628cc262146103ef5780630238b936146104185780630d7bac4f1461043957806312edb24c1461044c575b600080fd5b6104026103fd3660046148fc565b6109ce565b60405161040f9190614917565b60405180910390f35b61042b610426366004614969565b610b4d565b60405190815260200161040f565b61042b6104473660046149a9565b610c4e565b610454610c7a565b60405161040f91906149c2565b61047461046f3660046148fc565b610ce9565b005b61042b610484366004614a10565b610e09565b610402610e93565b6104a461049f3660046148fc565b610f34565b60405161040f9190614a32565b61042b6104bf3660046148fc565b610fe8565b6024546104e49073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161040f565b61051c610517366004614aa0565b61102d565b604051901515815260200161040f565b6104e461053a3660046148fc565b60216020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61042b6105703660046148fc565b611113565b610474610583366004614ad3565b6113ff565b61042b6105963660046148fc565b73ffffffffffffffffffffffffffffffffffffffff166000908152601f602052604090205490565b61042b62093a8081565b6104746105d63660046148fc565b611566565b6104e46105e93660046148fc565b600f6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6023546104e49073ffffffffffffffffffffffffffffffffffffffff1681565b61042b61063f3660046148fc565b611650565b6001546104e49073ffffffffffffffffffffffffffffffffffffffff1681565b61042b611671565b601d5461042b565b61042b6106823660046148fc565b60156020526000908152604090205481565b61042b6106a23660046148fc565b60196020526000908152604090205481565b61042b60085481565b610402611716565b6022546104e4906601000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b61042b6106fd366004614b2f565b611875565b610402610710366004614b59565b611a81565b610728610723366004614b2f565b611afd565b604080519586526020860194909452928401919091526060830152608082015260a00161040f565b610474611b4b565b61042b6107663660046148fc565b602080526000908152604090205481565b61042b6107853660046148fc565b611c96565b610474610798366004614b2f565b611cad565b6107b06107ab3660046148fc565b611e44565b6040805193845260208401929092529082015260600161040f565b6000546104e49073ffffffffffffffffffffffffffffffffffffffff1681565b6104746107f93660046148fc565b612078565b60225461051c9060ff1681565b61042b6108193660046148fc565b61216b565b61042b60095481565b610474610835366004614a10565b612235565b61042b60075481565b6104026108513660046148fc565b6123f1565b6104e46108643660046148fc565b612479565b61042b60055481565b61042b6108803660046148fc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526025602052604090205490565b61042b60065481565b61042b60035481565b6104746108c8366004614a10565b6124dc565b61042b6108db3660046148fc565b612844565b6104746108ee366004614b90565b612880565b6104746109013660046148fc565b612a6f565b61042b6109143660046148fc565b73ffffffffffffffffffffffffffffffffffffffff166000908152601e602052604090205490565b61047461094a366004614aa0565b612c89565b601c5461042b565b610474612d70565b61047461096d3660046148fc565b612e41565b61042b60045481565b61042b600a5481565b61042b600b5481565b61042b61099b3660046149a9565b612fa1565b6104746109ae366004614bdd565b6130b8565b6104746109c1366004614c29565b61328e565b61047461344e565b606060006109da611716565b60105490915067ffffffffffffffff8111156109f8576109f8614bfa565b604051908082528060200260200182016040528015610a21578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff84166000908152601f602052604090205490925015610b475760005b601054811015610b455773ffffffffffffffffffffffffffffffffffffffff84166000818152601860209081526040808320858452825280832054938352601782528083208584529091529020548351670de0b6b3a76400009190859085908110610ac057610ac0614cce565b6020026020010151610ad29190614d2c565b73ffffffffffffffffffffffffffffffffffffffff87166000908152601f6020526040902054610b029190614d3f565b610b0c9190614d56565b610b169190614d91565b838281518110610b2857610b28614cce565b602090810291909101015280610b3d81614da4565b915050610a53565b505b50919050565b60006002805403610bbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60028055602254610100900460ff1615610c35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f5769746864726177616c732070617573656400000000000000000000000000006044820152606401610bb6565b610c413384868561347e565b6001600255949350505050565b600654600754600091610c7491610c658286614d3f565b610c6f9190614d56565b61365c565b92915050565b60606010805480602002602001604051908101604052809291908181526020018280548015610cdf57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610cb4575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e00000000000000000000000000000000006064820152608401610bb6565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b60006002805403610e76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bb6565b60028055610e873380858542613674565b60016002559392505050565b60135460609067ffffffffffffffff811115610eb157610eb1614bfa565b604051908082528060200260200182016040528015610eda578160200160208202803683370190505b50905060005b601354811015610f305762093a80610ef782612fa1565b610f019190614d3f565b828281518110610f1357610f13614cce565b602090810291909101015280610f2881614da4565b915050610ee0565b5090565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602560209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610fdd57838290600052602060002090600502016040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505081526020019060010190610f79565b505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602080526040812054600354670de0b6b3a76400009161102391614d3f565b610c749190614d56565b73ffffffffffffffffffffffffffffffffffffffff811660009081526014602052604081205460ff1661106257506000610c74565b73ffffffffffffffffffffffffffffffffffffffff83161580611099575073ffffffffffffffffffffffffffffffffffffffff8216155b156110a657506000610c74565b60005473ffffffffffffffffffffffffffffffffffffffff908116908416036110d157506001610c74565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600f602052604090205481851691160361110a57506001610c74565b50600092915050565b6000808061112084612479565b905073ffffffffffffffffffffffffffffffffffffffff8116156111e5576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015273c8418af6358ffdda74e09ca9cc3fe03ca6adc5b0906370a0823190602401602060405180830381865afa1580156111bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e09190614ddc565b611287565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273c8418af6358ffdda74e09ca9cc3fe03ca6adc5b0906370a0823190602401602060405180830381865afa158015611263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112879190614ddc565b91506000670de0b6b3a764000073c8418af6358ffdda74e09ca9cc3fe03ca6adc5b073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113179190614ddc565b6113219190614d3f565b600954600a546113319086614d3f565b61133b9190614d3f565b6113459190614d56565b905060008073ffffffffffffffffffffffffffffffffffffffff8416156113745761136f84611c96565b61137d565b61137d87611650565b905080156113cf5760008161139a670de0b6b3a764000088614d3f565b6113a49190614d56565b9050670de0b6b3a7640000600a54826113bd9190614d3f565b6113c79190614d56565b9250506113d4565b600091505b508082116113e257806113e4565b815b9450600a548511156113f657600a5494505b50505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314806114385750738412ebf45bac1b340bbe8f318b928c466c4e39ca33145b61149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610bb6565b602280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff166301000000951515959095027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169490941761010093151593909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffff1662010000911515919091027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff161764010000000091151591909102179055565b60028054036115d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bb6565b6002805560225462010000900460ff1615611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5265776172647320636f6c6c656374696f6e20706175736564000000000000006044820152606401610bb6565b506001600255565b6000670de0b6b3a7640000600b5461166784612844565b6110239190614d3f565b602454604080517fbb7b8b80000000000000000000000000000000000000000000000000000000008152905160009260049273ffffffffffffffffffffffffffffffffffffffff9091169163bb7b8b809180850191602091819003860181865afa1580156116e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117079190614ddc565b6117119190614d56565b905090565b6060601c54600014806117295750601d54155b15611783576016805480602002602001604051908101604052809291908181526020018280548015610cdf57602002820191906000526020600020905b815481526020019060010190808311611766575050505050905090565b60105467ffffffffffffffff81111561179e5761179e614bfa565b6040519080825280602002602001820160405280156117c7578160200160208202803683370190505b50905060005b601654811015610f3057601d546117e382612fa1565b6005546117ee6139c8565b6117f89190614d2c565b6118029190614d3f565b61181490670de0b6b3a7640000614d3f565b61181e9190614d56565b6016828154811061183157611831614cce565b90600052602060002001546118469190614d91565b82828151811061185857611858614cce565b60209081029190910101528061186d81614da4565b9150506117cd565b73ffffffffffffffffffffffffffffffffffffffff821660009081526025602052604081208054829190849081106118af576118af614cce565b600091825260208083206040805160a081018252600590940290910180548452600181015484840181905260028201548584015260038201546060860152600490910154608085015273ffffffffffffffffffffffffffffffffffffffff891685526019909252832054919350111561192d57506020810151611955565b5073ffffffffffffffffffffffffffffffffffffffff84166000908152601960205260409020545b42826060015111611a1557606082015173ffffffffffffffffffffffffffffffffffffffff86166000908152601960205260409020541015611a0c5760008183606001516119a39190614d2c565b905060008360600151426119b79190614d2c565b905060006119c9610447600285614d56565b905060006119d78382614d3f565b6119e18584614d3f565b6119eb9190614d91565b90506119f78385614d91565b611a019082614d56565b965050505050611a65565b60009250611a65565b600080828460600151611a289190614d2c565b90506000428560600151611a3c9190614d2c565b90506002611a4a8284614d91565b611a549190614d56565b92505050611a6181610c4e565b9350505b8160800151831115611a7957816080015192505b505092915050565b60606002805403611aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bb6565b60028055610e873384846139d6565b60256020528160005260406000208181548110611b1957600080fd5b600091825260209091206005909102018054600182015460028301546003840154600490940154929550909350919085565b60015473ffffffffffffffffffffffffffffffffffffffff163314611bf2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e65727368697000000000000000000000006064820152608401610bb6565b6000546001546040805173ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b6000670de0b6b3a7640000600b5461166784610fe8565b600054829073ffffffffffffffffffffffffffffffffffffffff16331480611cda5750611cda338261102d565b611d40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f74206f776e6572206f7220746b6e206d67720000000000000000000000006044820152606401610bb6565b73ffffffffffffffffffffffffffffffffffffffff831660009081526014602052604090205460ff16808015611d9c575073ffffffffffffffffffffffffffffffffffffffff8481166000908152600f60205260409020541633145b80611dc7575080158015611dc7575060005473ffffffffffffffffffffffffffffffffffffffff1633145b15611ddd57611dd7843385613ca4565b50505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4e6f2076616c696420746f6b656e7320746f207265636f7665720000000000006044820152606401610bb6565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601f60205260408120549080611e7584611113565b73ffffffffffffffffffffffffffffffffffffffff85166000908152601e602052604081205491935090158015611ecf575073ffffffffffffffffffffffffffffffffffffffff85166000908152601f6020526040902054155b80611eff575073ffffffffffffffffffffffffffffffffffffffff85166000908152600c60205260409020548310155b15611f0b575081611f4b565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600c6020526040902054600290611f3e9085614d91565b611f489190614d56565b90505b6000915060005b73ffffffffffffffffffffffffffffffffffffffff861660009081526025602052604090205481101561206f5773ffffffffffffffffffffffffffffffffffffffff86166000908152602560205260408120805483908110611fb657611fb6614cce565b90600052602060002090600502016040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050600061200f8884611875565b60408301519091506000670de0b6b3a764000061202c8785614d91565b6120369084614d3f565b6120409190614d56565b61204a9083614d91565b90506120568188614d91565b965050505050808061206790614da4565b915050611f52565b50509193909250565b60005473ffffffffffffffffffffffffffffffffffffffff163314806120b15750738412ebf45bac1b340bbe8f318b928c466c4e39ca33145b612117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610bb6565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b6000600354600b5461217d9190614d3f565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152670de0b6b3a764000090819073c8418af6358ffdda74e09ca9cc3fe03ca6adc5b0906370a0823190602401602060405180830381865afa158015612207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222b9190614ddc565b6116679190614d3f565b60028054036122a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bb6565b600280553360016122b382826000613e14565b6000806122c03387613f6e565b9150915060008583604001516122d69190614d91565b9050602254612307906601000000000000900473ffffffffffffffffffffffffffffffffffffffff16333089614133565b6040805160a08101825288815260208581015181830152818301849052606080870151908301526080808701519083015233600090815260259091529190912080548490811061235957612359614cce565b906000526020600020906005020160008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050506123a8338760016142c9565b604080518881526020810188905233917f2640b32e7e5d0fa2a21ea06b22fbd75fda0fda384a895a5fdeef43646de47a0c910160405180910390a2505060016002555050505050565b6060600280540361245e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bb6565b6002805561246e338360016139d6565b600160025592915050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600d602052604081205460ff16156124ab575090565b5073ffffffffffffffffffffffffffffffffffffffff9081166000908152602160205260409020541690565b919050565b6002805403612547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bb6565b6002805533600161255a82826000613e14565b6000806125673387613f6e565b915091504285116125d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d75737420626520696e207468652066757475726500000000000000000000006044820152606401610bb6565b6000428360600151116125e85760006125f8565b4283606001516125f89190614d2c565b905060006126064288614d2c565b9050818111612671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f43616e6e6f742073686f7274656e206c6f636b2074696d6500000000000000006044820152606401610bb6565b6008548110156126dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d696e696d756d207374616b652074696d65206e6f74206d65740000000000006044820152606401610bb6565b600754811115612749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f547279696e6720746f206c6f636b20666f7220746f6f206c6f6e6700000000006044820152606401610bb6565b6040518060a001604052808981526020014281526020018560400151815260200188815260200161277983610c4e565b905233600090815260256020526040902080548590811061279c5761279c614cce565b906000526020600020906005020160008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050506127ec3360006001613e14565b6040805189815260208101839052428183015260608101899052905133917fc2cf1aae6decacbc52f96b4e4fec96d4ebab5236e4ed987165537bc463014a43919081900360800190a250506001600255505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601e6020526040812054600354670de0b6b3a76400009161102391614d3f565b600054849073ffffffffffffffffffffffffffffffffffffffff163314806128ad57506128ad338261102d565b612913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f74206f776e6572206f7220746b6e206d67720000000000000000000000006044820152606401610bb6565b73ffffffffffffffffffffffffffffffffffffffff851660009081526015602052604090205460138054869290811061294e5761294e614cce565b9060005260206000200181905550826011601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106129af576129af614cce565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055918716815260159091526040902054601280548492908110612a2057612a20614cce565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600d602052604090205460ff16612afe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f7879000000000000000000000000000000000000006044820152606401610bb6565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600e6020908152604080832033845290915290205460ff16612b98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f50726f787920686173206e6f7420616c6c6f77656420796f75207965740000006044820152606401610bb6565b3360009081526021602052604090205473ffffffffffffffffffffffffffffffffffffffff168015612c0c57336000908152601e602090815260408083205473ffffffffffffffffffffffffffffffffffffffff851684529180528220805491929091612c06908490614d2c565b90915550505b33600090815260216020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155601e8352818420549084529180528220805491929091612c80908490614d91565b90915550505050565b600054829073ffffffffffffffffffffffffffffffffffffffff16331480612cb65750612cb6338261102d565b612d1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f74206f776e6572206f7220746b6e206d67720000000000000000000000006044820152606401610bb6565b5073ffffffffffffffffffffffffffffffffffffffff9182166000908152600f6020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331480612da95750738412ebf45bac1b340bbe8f318b928c466c4e39ca33145b612e0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610bb6565b602280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b336000908152600d602052604090205460ff16612eba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f7879000000000000000000000000000000000000006044820152606401610bb6565b336000818152600e6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8681168552908352818420805460ff8116157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091161790556021909252909120541603612f9e5773ffffffffffffffffffffffffffffffffffffffff8116600090815260216020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055601e8252808320543384529180528220805491929091612f98908490614d2c565b90915550505b50565b60008060118381548110612fb757612fb7614cce565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169050801561309257670de0b6b3a7640000601a8481548110612ffd57612ffd614cce565b90600052602060002001548273ffffffffffffffffffffffffffffffffffffffff16630a3be7576040518163ffffffff1660e01b8152600401602060405180830381865afa158015613053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130779190614ddc565b6130819190614d3f565b61308b9190614d56565b9150610b47565b601383815481106130a5576130a5614cce565b9060005260206000200154915050919050565b60005b60115481101561328a576000601182815481106130da576130da614cce565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169050801561327757828061312c5750601b828154811061311e5761311e614cce565b906000526020600020015442115b15613277576040517f6472eee100000000000000000000000000000000000000000000000000000000815230600482015242602482015273ffffffffffffffffffffffffffffffffffffffff821690636472eee1906044016020604051808303816000875af11580156131a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c79190614ddc565b601a83815481106131da576131da614cce565b90600052602060002001819055508073ffffffffffffffffffffffffffffffffffffffff1663513872bd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132579190614ddc565b601b838154811061326a5761326a614cce565b6000918252602090912001555b508061328281614da4565b9150506130bb565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314806132c75750738412ebf45bac1b340bbe8f318b928c466c4e39ca33145b61332d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610bb6565b8051670de0b6b3a764000011156133a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4d757374206265203e3d204d554c2050524543000000000000000000000000006044820152606401610bb6565b60808101516001118015906133ba575060a0810151600111155b613420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d757374206265203e3d203100000000000000000000000000000000000000006044820152606401610bb6565b80516006556020810151600a556040810151600b556060810151600955608081015160075560a00151600855565b61345860006130b8565b613460611671565b60035560045442106134765761347461443c565b565b613474614765565b600081806134975750602254640100000000900460ff16155b156134ae576134a8858560016139d6565b506134bb565b6134bb8560016000613e14565b6000806134c88786613f6e565b915091508160600151421015806134e6575060225460ff1615156001145b61354c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5374616b65206973207374696c6c206c6f636b656421000000000000000000006044820152606401610bb6565b6040820151801561365157602254613585906601000000000000900473ffffffffffffffffffffffffffffffffffffffff168883613ca4565b73ffffffffffffffffffffffffffffffffffffffff881660009081526025602052604090208054839081106135bc576135bc614cce565b6000918252602082206005909102018181556001810182905560028101829055600381018290556004018190556135f690899083906142c9565b604080518281526020810188905273ffffffffffffffffffffffffffffffffffffffff898116828401529151918a16917f1d9308f6b22a2754a1c622bb30889e8f8f956c83e524d039e9d65d5f052eb9089181900360600190a25b979650505050505050565b600081831061366b578161366d565b825b9392505050565b600085600161368582826000613e14565b6022546301000000900460ff16156136f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f5374616b696e67207061757365640000000000000000000000000000000000006044820152606401610bb6565b600854851015613765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d696e696d756d207374616b652074696d65206e6f74206d65740000000000006044820152606401610bb6565b6007548511156137d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f547279696e6720746f206c6f636b20666f7220746f6f206c6f6e6700000000006044820152606401610bb6565b602254613800906601000000000000900473ffffffffffffffffffffffffffffffffffffffff16883089614133565b600061380b86610c4e565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152601e602090815260408083205490517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608f901b169281019290925260348201899052605482018b9052607482015291925090609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012073ffffffffffffffffffffffffffffffffffffffff8e1660009081526025835283902060a0850184528185529184018a90529183018b905290925090606081016138fe8a8a614d91565b8152602090810185905282546001818101855560009485529382902083516005909202019081559082015181840155604082015160028201556060820151600382015560809091015160049091015561395a908b908a906142c9565b604080518981526020810189905290810182905273ffffffffffffffffffffffffffffffffffffffff8a811660608301528b16907ff400e72e69ef4402819dfc57eeddc66f5eb69bf405e0e8098b1946ec1ac14a229060800160405180910390a29998505050505050505050565b60006117114260045461365c565b60608360016139e782826000613e14565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260196020526040902042905560225462010000900460ff1615613a82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5265776172647320636f6c6c656374696f6e20706175736564000000000000006044820152606401610bb6565b60105467ffffffffffffffff811115613a9d57613a9d614bfa565b604051908082528060200260200182016040528015613ac6578160200160208202803683370190505b50925060005b601054811015613c9a5773ffffffffffffffffffffffffffffffffffffffff871660009081526018602090815260408083208484529091529020548451859083908110613b1b57613b1b614cce565b60209081029190910181019190915273ffffffffffffffffffffffffffffffffffffffff881660009081526018825260408082208483529092529081208190558451859083908110613b6f57613b6f614cce565b60200260200101511115613c8857613bde60108281548110613b9357613b93614cce565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687868481518110613bd157613bd1614cce565b6020026020010151613ca4565b8673ffffffffffffffffffffffffffffffffffffffff167f1d2f2ca53af5d2f333bd32fdd45f9c52ad8ebe31414f7792912077fcb3876dff858381518110613c2857613c28614cce565b602002602001015160108481548110613c4357613c43614cce565b600091825260209182902001546040805193845273ffffffffffffffffffffffffffffffffffffffff918216928401929092528a169082015260600160405180910390a25b80613c9281614da4565b915050613acc565b5050509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691613d3b9190614e19565b6000604051808303816000865af19150503d8060008114613d78576040519150601f19603f3d011682016040523d82523d6000602084013e613d7d565b606091505b5091509150818015613da7575080511580613da7575080806020019051810190613da79190614e35565b613e0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610bb6565b5050505050565b8115613e2257613e2261344e565b8015613e5857613e3183611113565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600c60205260409020555b73ffffffffffffffffffffffffffffffffffffffff831615611e3f576000806000613e8286611e44565b925092509250613e91866147d8565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600c60205260409020829055828110613f15576000613ecc8483614d2c565b905080601d54613edc9190614d91565b601d55613ee98185614d91565b73ffffffffffffffffffffffffffffffffffffffff88166000908152601f602052604090205550613f66565b6000613f218285614d2c565b905080601d54613f319190614d2c565b601d55613f3e8185614d2c565b73ffffffffffffffffffffffffffffffffffffffff88166000908152601f6020526040902055505b505050505050565b613fa36040518060a0016040528060008019168152602001600081526020016000815260200160008152602001600081525090565b6000805b73ffffffffffffffffffffffffffffffffffffffff85166000908152602560205260409020548110156140c15773ffffffffffffffffffffffffffffffffffffffff8516600090815260256020526040902080548290811061400b5761400b614cce565b90600052602060002090600502016000015484036140af5773ffffffffffffffffffffffffffffffffffffffff8516600090815260256020526040902080548290811061405a5761405a614cce565b90600052602060002090600502016040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505092508091506140c1565b806140b981614da4565b915050613fa7565b508151831461412c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5374616b65206e6f7420666f756e6400000000000000000000000000000000006044820152606401610bb6565b9250929050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916141d29190614e19565b6000604051808303816000865af19150503d806000811461420f576040519150601f19603f3d011682016040523d82523d6000602084013e614214565b606091505b509150915081801561423e57508051158061423e57508080602001905181019061423e9190614e35565b613f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c4544000000000000000000000000000000000000000000000000000000006064820152608401610bb6565b60006142d484612479565b905081156143885782601c60008282546142ee9190614d91565b909155505073ffffffffffffffffffffffffffffffffffffffff84166000908152601e602052604081208054859290614328908490614d91565b909155505073ffffffffffffffffffffffffffffffffffffffff8116156143835773ffffffffffffffffffffffffffffffffffffffff811660009081526020805260408120805485929061437d908490614d91565b90915550505b61442f565b82601c600082825461439a9190614d2c565b909155505073ffffffffffffffffffffffffffffffffffffffff84166000908152601e6020526040812080548592906143d4908490614d2c565b909155505073ffffffffffffffffffffffffffffffffffffffff81161561442f5773ffffffffffffffffffffffffffffffffffffffff8116600090815260208052604081208054859290614429908490614d2c565b90915550505b611dd78460006001613e14565b614444614765565b60005b6012548110156145355760006012828154811061446657614466614cce565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1690508015614522576040517f092193ab00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff82169063092193ab9060240160408051808303816000875af11580156144fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061451f9190614e52565b50505b508061452d81614da4565b915050614447565b50600062093a806004544261454a9190614d2c565b6145549190614d56565b905060005b601054811015614737576010818154811061457657614576614cce565b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156145ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146119190614ddc565b61461c836001614d91565b62093a8061462984612fa1565b6146339190614d3f565b61463d9190614d3f565b11156010828154811061465257614652614cce565b60009182526020918290200154604080517f4e6f7420656e6f7567682072657761726420746f6b656e7320617661696c6162938101939093527f6c653a20000000000000000000000000000000000000000000000000000000009083015260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016604482015260580160405160208183030381529060405290614724576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb69190614e76565b508061472f81614da4565b915050614559565b5062093a80614747826001614d91565b6147519190614d3f565b60045461475e9190614d91565b600455612f9e5b600061476f611716565b905060005b6016548110156147c95781818151811061479057614790614cce565b6020026020010151601682815481106147ab576147ab614cce565b600091825260209091200155806147c181614da4565b915050614774565b506147d26139c8565b60055550565b73ffffffffffffffffffffffffffffffffffffffff811615612f9e5760006147ff826109ce565b905060005b815181101561486d5781818151811061481f5761481f614cce565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff8516600090815260188352604080822085835290935291909120558061486581614da4565b915050614804565b5060005b8151811015611e3f576016818154811061488d5761488d614cce565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff86168352601782526040808420858552909252912055806148d081614da4565b915050614871565b803573ffffffffffffffffffffffffffffffffffffffff811681146124d757600080fd5b60006020828403121561490e57600080fd5b61366d826148d8565b6020808252825182820181905260009190848201906040850190845b8181101561494f57835183529284019291840191600101614933565b50909695505050505050565b8015158114612f9e57600080fd5b60008060006060848603121561497e57600080fd5b8335925061498e602085016148d8565b9150604084013561499e8161495b565b809150509250925092565b6000602082840312156149bb57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561494f57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016149de565b60008060408385031215614a2357600080fd5b50508035926020909101359150565b602080825282518282018190526000919060409081850190868401855b82811015614a935781518051855286810151878601528581015186860152606080820151908601526080908101519085015260a09093019290850190600101614a4f565b5091979650505050505050565b60008060408385031215614ab357600080fd5b614abc836148d8565b9150614aca602084016148d8565b90509250929050565b60008060008060808587031215614ae957600080fd5b8435614af48161495b565b93506020850135614b048161495b565b92506040850135614b148161495b565b91506060850135614b248161495b565b939692955090935050565b60008060408385031215614b4257600080fd5b614b4b836148d8565b946020939093013593505050565b60008060408385031215614b6c57600080fd5b614b75836148d8565b91506020830135614b858161495b565b809150509250929050565b60008060008060808587031215614ba657600080fd5b614baf856148d8565b935060208501359250614bc4604086016148d8565b9150614bd2606086016148d8565b905092959194509250565b600060208284031215614bef57600080fd5b813561366d8161495b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060c08284031215614c3b57600080fd5b82601f830112614c4a57600080fd5b60405160c0810181811067ffffffffffffffff82111715614c94577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528060c0840185811115614ca957600080fd5b845b81811015614cc3578035835260209283019201614cab565b509195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610c7457610c74614cfd565b8082028115828204841417610c7457610c74614cfd565b600082614d8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610c7457610c74614cfd565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614dd557614dd5614cfd565b5060010190565b600060208284031215614dee57600080fd5b5051919050565b60005b83811015614e10578181015183820152602001614df8565b50506000910152565b60008251614e2b818460208701614df5565b9190910192915050565b600060208284031215614e4757600080fd5b815161366d8161495b565b60008060408385031215614e6557600080fd5b505080516020909101519092909150565b6020815260008251806020840152614e95816040850160208701614df5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212202d95b3432a176a86997481c51b61ec1759752fbb04e9cc8f0269382a375e800864736f6c63430008110033000000000000000000000000b1748c79709f4ba2dd82834b8c82d4a505003f2700000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000fd2d7847e0f450d8b00d3d697d720c687e622a7b00000000000000000000000000000000000000000000000000000000000000030000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0000000000000000000000000d533a949740bb3306d119cc777fa900ba034cd520000000000000000000000004e3fbd56cd56c3e72c1403e103b45db9da5b9d2b0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000b1748c79709f4ba2dd82834b8c82d4a505003f270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000001af2af8c840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000278dc748eda1d8efef1adfb518542612b49fcd3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000