0 txs
551 calls
constructor
constructor(address _yelayOwner, address _voSPOOL, address _migrator)
functions
allowance
purefunction allowance(address, address) pure returns (uint256)
approve
purefunction approve(address, uint256) pure returns (bool)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
firstTrancheStartTime
viewfunction firstTrancheStartTime() view returns (uint256)
FULL_POWER_TIME
viewfunction FULL_POWER_TIME() view returns (uint256)
FULL_POWER_TRANCHES_COUNT
viewfunction FULL_POWER_TRANCHES_COUNT() view returns (uint256)
getCurrentTrancheIndex
viewfunction getCurrentTrancheIndex() view returns (uint16)
getGlobalGradual
viewfunction getGlobalGradual() view returns (tuple)
getLastFinishedTrancheIndex
viewfunction getLastFinishedTrancheIndex() view returns (uint16)
getNextTrancheEndTime
viewfunction getNextTrancheEndTime() view returns (uint256)
getNotUpdatedGlobalGradual
viewfunction getNotUpdatedGlobalGradual() view returns (tuple)
getNotUpdatedUserGradual
viewfunction getNotUpdatedUserGradual(address user) view returns (tuple)
getTotalGradualVotingPower
viewfunction getTotalGradualVotingPower() view returns (uint256)
getTrancheEndTime
viewfunction getTrancheEndTime(uint256 trancheIndex) view returns (uint256)
getTrancheIndex
viewfunction getTrancheIndex(uint256 time) view returns (uint256)
getUserGradual
viewfunction getUserGradual(address user) view returns (tuple)
getUserGradualVotingPower
viewfunction getUserGradualVotingPower(address user) view returns (uint256)
globalMigrationComplete
viewfunction globalMigrationComplete() view returns (bool)
gradualMinters
viewfunction gradualMinters(address) view returns (bool)
indexedGlobalTranches
viewfunction indexedGlobalTranches(uint256) view returns (tuple zero, tuple one, tuple two, tuple three, tuple four)
migrationComplete
viewfunction migrationComplete() view returns (bool)
migrationInitiated
viewfunction migrationInitiated() view returns (bool)
migrator
viewfunction migrator() view returns (address)
minters
viewfunction minters(address) view returns (bool)
name
viewfunction name() view returns (string)
symbol
viewfunction symbol() view returns (string)
totalInstantPower
viewfunction totalInstantPower() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
TRANCHE_TIME
viewfunction TRANCHE_TIME() view returns (uint256)
transfer
purefunction transfer(address, uint256) pure returns (bool)
transferFrom
purefunction transferFrom(address, address, uint256) pure returns (bool)
userInstantPower
viewfunction userInstantPower(address) view returns (uint256)
userTranches
viewfunction userTranches(address, uint256) view returns (tuple zero, tuple one, tuple two, tuple three)
voSPOOL
viewfunction voSPOOL() view returns (address)
burn
nonpayablefunction burn(address from, uint256 amount)
burnGradual
nonpayablefunction burnGradual(address from, uint256 amount, bool burnAll)
migrateGlobalTranches
nonpayablefunction migrateGlobalTranches(uint256 endIndex)
migrateInitial
nonpayablefunction migrateInitial()
migrateUser
nonpayablefunction migrateUser(address user)
mint
nonpayablefunction mint(address to, uint256 amount)
mintGradual
nonpayablefunction mintGradual(address to, uint256 amount)
setGradualMinter
nonpayablefunction setGradualMinter(address _gradualMinter, bool _set)
setMinter
nonpayablefunction setMinter(address _minter, bool _set)
transferUser
nonpayablefunction transferUser(address from, address to)
updateUserVotingPower
nonpayablefunction updateUserVotingPower(address user)
updateVotingPower
nonpayablefunction updateVotingPower()
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Burned
event Burned(address indexed source, uint256 amount)
GlobalGradualUpdated
event GlobalGradualUpdated(uint16 indexed lastUpdatedTrancheIndex, uint48 totalMaturedVotingPower, uint48 totalMaturingAmount, uint56 totalRawUnmaturedVotingPower)
GlobalTranchesMigrated
event GlobalTranchesMigrated(uint256 indexed lastGlobalIndexMigrated)
GradualBurned
event GradualBurned(address indexed source, uint256 amount, bool burnAll)
GradualMinted
event GradualMinted(address indexed recipient, uint256 amount)
GradualMinterSet
event GradualMinterSet(address indexed minter, bool set)
Minted
event Minted(address indexed recipient, uint256 amount)
MinterSet
event MinterSet(address indexed minter, bool set)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
UserGradualUpdated
event UserGradualUpdated(address indexed user, uint16 indexed lastUpdatedTrancheIndex, uint48 maturedVotingPower, uint48 maturingAmount, uint56 rawUnmaturedVotingPower)
UserMigrated
event UserMigrated(address indexed user)
UserTransferred
event UserTransferred(address indexed from, address indexed to)
errors
No errors.
creation bytecode
0x60e06040523480156200001157600080fd5b50604051620055ef380380620055ef833981016040819052620000349162000100565b82806001600160a01b038116620000c35760405162461bcd60e51b815260206004820152604360248201527f59656c61794f776e61626c653a3a636f6e7374727563746f723a2059656c617960448201527f206f776e657220636f6e747261637420616464726573732063616e6e6f74206260648201526206520360ec1b608482015260a40160405180910390fd5b6001600160a01b0390811660805292831660a052501660c052506200014a565b80516001600160a01b0381168114620000fb57600080fd5b919050565b6000806000606084860312156200011657600080fd5b6200012184620000e3565b92506200013160208501620000e3565b91506200014160408501620000e3565b90509250925092565b60805160a05160c051615421620001ce600039600081816105b001528181610c670152818161110c01526120860152600081816108fe01528181610d7d015281816111950152818161122c0152818161143b015281816114d40152818161156f0152818161217f015281816122530152613f8501526000613e8d01526154216000f3fe608060405234801561001057600080fd5b50600436106103155760003560e01c80637a81cf26116101a7578063cf456ae7116100ee578063dd62ed3e11610097578063e4c4949511610071578063e4c4949514610959578063edcd508a1461096c578063f46eccc41461098f57600080fd5b8063dd62ed3e14610920578063dd6c7e3114610933578063e3d1d5bf1461094657600080fd5b8063d6a182b3116100c8578063d6a182b3146108de578063d7febbca146108f1578063d96811ed146108f957600080fd5b8063cf456ae714610816578063d09f88b514610829578063d4f54eae1461084957600080fd5b80639dc29fac11610150578063a9059cbb1161012a578063a9059cbb146107f3578063c8a168ef14610806578063cbfd3a431461080e57600080fd5b80639dc29fac146107b2578063a04d8043146107c5578063a5ef7fab146107d857600080fd5b80638827820711610181578063882782071461060a5780638c2a80341461066357806395d89b411461077657600080fd5b80637a81cf26146105a35780637cd07e47146105ab57806385cf95ac146105f757600080fd5b80633807a8f71161026b5780635638f3dd116102145780635eb5164d116101ee5780635eb5164d1461058057806370a08231146105885780637a1957ca1461059b57600080fd5b80635638f3dd146105445780635b465344146105575780635df0f4b61461057757600080fd5b806340c10f191161024557806340c10f191461051e57806343481a181461053157806344b066f51461053a57600080fd5b80633807a8f7146104d95780633f9a6020146105035780634053b3ba1461051657600080fd5b806323b872dd116102cd5780632e638b5f116102a75780632e638b5f146104975780632eaa241f146104ac578063313ce567146104bf57600080fd5b806323b872dd146103c05780632bff884f146103d35780632d43b867146103db57600080fd5b80630dad04bb116102fe5780630dad04bb1461038f57806316349cff1461039757806318160ddd146103b857600080fd5b806306fdde031461031a578063095ea7b31461036c575b600080fd5b6103566040518060400160405280600c81526020017f5374616b65642059656c6179000000000000000000000000000000000000000081525081565b6040516103639190614b10565b60405180910390f35b61037f61037a366004614ba7565b6109b2565b6040519015158152602001610363565b61037f610a42565b6103aa6103a5366004614bd1565b610a95565b604051908152602001610363565b6103aa610ab4565b61037f6103ce366004614bec565b610ade565b61037f610b69565b61045a6103e9366004614c28565b60066020908152600091825260409182902082518083018452815465ffffffffffff9081168252845180850186526001840154821681528551808601875260028501548316815286518087018852600386015484168152875196870190975260049094015490911684529093909285565b60408051955165ffffffffffff9081168752945185166020870152925184169285019290925251821660608401525116608082015260a001610363565b6104aa6104a5366004614bd1565b610bc5565b005b6104aa6104ba366004614c28565b610be1565b6104c7601281565b60405160ff9091168152602001610363565b7fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe50075460ff1661037f565b6104aa610511366004614ba7565b61106d565b6104aa6110f4565b6104aa61052c366004614ba7565b611642565b6103aa60035481565b6103aa62093a8081565b6104aa610552366004614c4f565b6116ca565b61056a610565366004614bd1565b6118aa565b6040516103639190614c86565b6103aa60005481565b6103aa6119cd565b6103aa610596366004614bd1565b6119de565b6104aa611a26565b6103aa60d081565b6105d27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610363565b6103aa610605366004614c28565b611a38565b610612611a5a565b6040516103639190600060808201905065ffffffffffff8084511683528060208501511660208401525066ffffffffffffff604084015116604083015261ffff606084015116606083015292915050565b61070d610671366004614ba7565b600860209081526000928352604080842082529183529181902081518083018352815465ffffffffffff808216835261ffff660100000000000092839004811684880152855180870187526001860154808416825284900482168189015286518088018852600287015480851682528590048316818a015287518089019098526003909601549283168752929091041694840194909452929184565b60408051855165ffffffffffff908116825260209687015161ffff908116888401528651821693830193909352948601518216606082015283518516608082015292850151811660a0840152815190931660c0830152909201511660e082015261010001610363565b6103566040518060400160405280600581526020017f73594c415900000000000000000000000000000000000000000000000000000081525081565b6104aa6107c0366004614ba7565b611a8d565b6103aa6107d3366004614c28565b611bb1565b6107e0611c7d565b60405161ffff9091168152602001610363565b61037f610801366004614ba7565b611c8f565b6107e0611d1a565b6103aa611d25565b6104aa610824366004614c4f565b611d3b565b6103aa610837366004614bd1565b60046020526000908152604090205481565b610612604080516080810182526000808252602082018190529181018290526060810191909152506040805160808101825260055465ffffffffffff8082168352660100000000000082041660208301526c01000000000000000000000000810466ffffffffffffff169282019290925273010000000000000000000000000000000000000090910461ffff16606082015290565b61056a6108ec366004614bd1565b611ef5565b6103aa611f5e565b6105d27f000000000000000000000000000000000000000000000000000000000000000081565b6103aa61092e366004614d12565b611f75565b6104aa610941366004614bd1565b612000565b6104aa610954366004614d12565b612545565b6104aa610967366004614d45565b612b55565b61037f61097a366004614bd1565b60026020526000908152604090205460ff1681565b61037f61099d366004614bd1565b60016020526000908152604090205460ff1681565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f73594c41593a3a617070726f76653a2050726f6869626974656420416374696f60448201527f6e0000000000000000000000000000000000000000000000000000000000000060648201526000906084015b60405180910390fd5b6000610a907fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe5001547fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe500054101590565b905090565b600080610aa183613190565b509050610aad816133d9565b9392505050565b600080610abf613422565b509050610acb816133d9565b600354610ad89190614db4565b91505090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f73594c41593a3a7472616e7366657246726f6d3a2050726f686962697465642060448201527f416374696f6e00000000000000000000000000000000000000000000000000006064820152600090608401610a39565b6000610b736134fe565b158015610a905750507fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe5001547fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe500054101590565b610bcd613581565b610bd5613620565b610bde8161374f565b50565b610be96134fe565b610c4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f53594c41593a206d6967726174696f6e20706572696f6420656e6465640000006044820152606401610a39565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f73594c41593a2063616c6c6572206e6f74206d69677261746f720000000000006044820152606401610a39565b7fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe5000610d188161390c565b7fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe5001547fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe50005410610d65575050565b60028101545b8281101561102a5760008060008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632d43b867876040518263ffffffff1660e01b8152600401610dd691815260200190565b60a060405180830381865afa158015610df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e179190614ea5565b945094509450945094506000806000806000610e4a8a600001518a600001518a600001518a600001518a6000015161397a565b945094509450945094506040518060a0016040528060405180602001604052808865ffffffffffff16815250815260200160405180602001604052808765ffffffffffff16815250815260200160405180602001604052808665ffffffffffff16815250815260200160405180602001604052808565ffffffffffff16815250815260200160405180602001604052808465ffffffffffff16815250815250600660008d815260200190815260200160002060008201518160000160008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550505060208201518160010160008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550505060408201518160020160008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550505060608201518160030160008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550505060808201518160040160008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550505090505050505050505050505050808061102290614f0f565b915050610d6b565b506002810182905561103d600583614f47565b8082556040517f1f625b40d8e296f853ea59bccf59010da749af810cbdc4e00b6c859c3308790390600090a25050565b611075613581565b61107d613620565b816110878161374f565b6000611092836139ee565b905061109e8482613a00565b8373ffffffffffffffffffffffffffffffffffffffff167fe24fb5918dfdd34ee115de98f0d2960d0ce30d6169a74367fd256ff3b5048b74846040516110e691815260200190565b60405180910390a250505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f73594c41593a2063616c6c6572206e6f74206d69677261746f720000000000006044820152606401610a39565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635df0f4b66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112229190614f84565b60008190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d4f54eae6040518163ffffffff1660e01b8152600401608060405180830381865afa158015611295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b99190614fc6565b905060405180608001604052806112d38360000151613d84565b65ffffffffffff1681526020016112ed8360200151613d84565b65ffffffffffff1681526020016113078360400151613d97565b66ffffffffffffff908116825260608085015161ffff908116602094850152845160058054878701516040898101519990960151909416730100000000000000000000000000000000000000027fffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff989096166c0100000000000000000000000002979097167fffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff65ffffffffffff9485166601000000000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090991694909316939093179690961716179190911790925581517f43481a1800000000000000000000000000000000000000000000000000000000815291516114aa9273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016926343481a18926004808401938290030181865afa158015611481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a59190614f84565b613da2565b60035560007fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe500090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a5ef7fab6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561153d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611561919061506a565b61ffff1681600101819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166343481a186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc9190614f84565b600482015560209091015165ffffffffffff16600682015560070180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b61164a613dbd565b806003600082825461165c9190614db4565b909155505073ffffffffffffffffffffffffffffffffffffffff821660008181526004602052604090819020805484019055517f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe906116be9084815260200190565b60405180910390a25050565b6116d2613e5c565b61175e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f59656c61794f776e61626c653a3a6f6e6c794f776e65723a2043616c6c65722060448201527f6973206e6f74207468652059656c6179206f776e6572000000000000000000006064820152608401610a39565b73ffffffffffffffffffffffffffffffffffffffff8216611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f73594c41593a3a7365744772616475616c4d696e7465723a206772616475616c60448201527f206d696e7465722063616e6e6f7420626520746865207a65726f20616464726560648201527f7373000000000000000000000000000000000000000000000000000000000000608482015260a401610a39565b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fd066a75103af5bd5a100de58375e7cf390671150ac63a9f845137e25042bf15891016116be565b6119006040805160c0810182526000808252602080830182905282840182905283518085018552828152808201839052606084015283518085019094528184528301529060808201908152600060209091015290565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260076020908152604091829020825160c081018452815465ffffffffffff808216835266010000000000008204168285015266ffffffffffffff6c01000000000000000000000000909104168185015283518085018552600183015461ffff808216835260ff6201000092839004811684880152606085019390935286518088019097526002850154808216885291909104909116938501939093526080810193909352600301541660a082015290565b6119db60d062093a80614f47565b81565b6000806119ea83613190565b5090506119f6816133d9565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040902054610aad9190614db4565b611a2e613581565b611a36613620565b565b6000611a4762093a8083614f47565b600054611a549190614db4565b92915050565b604080516080810182526000808252602082018190529181018290526060810182905290611a86613422565b5092915050565b611a95613dbd565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054811115611b4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f73594c41593a6275726e3a205573657220696e7374616e7420706f776572206260448201527f616c616e636520746f6f206c6f770000000000000000000000000000000000006064820152608401610a39565b73ffffffffffffffffffffffffffffffffffffffff82166000818152600460205260409081902080548490039055600380548490039055517f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df7906116be9084815260200190565b60008054821015611c6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f73594c41593a3a6765745472616e636865496e6465783a2054696d65206d757360448201527f74206265206d6f7265206f7220657175616c20746f207468652066697273742060648201527f7472616e6368652074696d650000000000000000000000000000000000000000608482015260a401610a39565b611c7382613f0d565b61ffff1692915050565b60006001611c89611d1a565b03905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f73594c41593a3a7472616e736665723a2050726f68696269746564204163746960448201527f6f6e0000000000000000000000000000000000000000000000000000000000006064820152600090608401610a39565b6000610a9042613f0d565b6000610a90611d32611d1a565b61ffff16611a38565b611d43613e5c565b611dcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f59656c61794f776e61626c653a3a6f6e6c794f776e65723a2043616c6c65722060448201527f6973206e6f74207468652059656c6179206f776e6572000000000000000000006064820152608401610a39565b73ffffffffffffffffffffffffffffffffffffffff8216611e72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f73594c41593a3a7365744d696e7465723a206d696e7465722063616e6e6f742060448201527f626520746865207a65726f2061646472657373000000000000000000000000006064820152608401610a39565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f583b0aa0e528532caf4b907c11d7a8158a122fe2a6fb80cd9b09776ebea8d92d91016116be565b611f4b6040805160c0810182526000808252602080830182905282840182905283518085018552828152808201839052606084015283518085019094528184528301529060808201908152600060209091015290565b6000611f5683613190565b509392505050565b600080611f69613422565b509050610ad8816133d9565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f73594c41593a3a616c6c6f77616e63653a2050726f686962697465642041637460448201527f696f6e00000000000000000000000000000000000000000000000000000000006064820152600090608401610a39565b6120086134fe565b61206e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f53594c41593a206d6967726174696f6e20706572696f6420656e6465640000006044820152606401610a39565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f73594c41593a2063616c6c6572206e6f74206d69677261746f720000000000006044820152606401610a39565b7fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe50006121378161390c565b6040517fd09f88b500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063d09f88b590602401602060405180830381865afa1580156121c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ec9190614f84565b90506121f781613da2565b73ffffffffffffffffffffffffffffffffffffffff84811660008181526004602081905260408083209590955593517f5b46534400000000000000000000000000000000000000000000000000000000815293840191909152917f000000000000000000000000000000000000000000000000000000000000000090911690635b4653449060240161010060405180830381865afa15801561229d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c191906150cb565b90506040518060c001604052806122db8360000151613d84565b65ffffffffffff1681526020016122f58360200151613d84565b65ffffffffffff16815260200161230f8360400151613d97565b66ffffffffffffff90811682526060808501805160208086019190915260808088015160408088019190915260a0808a015161ffff9081169887019890985273ffffffffffffffffffffffffffffffffffffffff8d166000908152600785528281208a5181548c880151958d0151909a166c01000000000000000000000000027fffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff65ffffffffffff9687166601000000000000027fffffffffffffffffffffffffffffffffffffffff000000000000000000000000909c16928716929092179a909a17169890981788559589015180516001890180549287015160ff908116620100009081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000958616948e169490941793909317909155948b0151805160028b018054928901519097169092029216908a161717909255960151600394850180549187167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000092909216919091179055928801805488019055918501516005880180549190951601909355515116908190036124cc575050505050565b60808201515161ffff16815b8181116124fb576124e98782613f30565b806124f381614f0f565b9150506124d8565b5060405173ffffffffffffffffffffffffffffffffffffffff8716907fbcc1c8056f7649ba87d2b5fc8b42a1a5264feb82b432abad911d745a1855194290600090a2505050505050565b61254d613581565b73ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604081206003015461ffff169003612608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f73594c41593a3a6d6967726174653a205573657220646f6573206e6f7420657860448201527f69737400000000000000000000000000000000000000000000000000000000006064820152608401610a39565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604090206003015461ffff16156126c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f73594c41593a3a6d6967726174653a205573657220616c72656164792065786960448201527f73747300000000000000000000000000000000000000000000000000000000006064820152608401610a39565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260076020908152604091829020825160c081018452815465ffffffffffff808216835266010000000000008204168285015266ffffffffffffff6c01000000000000000000000000909104168185015283518085018552600183015461ffff808216835260ff6201000092839004811684880152606085019390935286518088019097526002850154808216885291909104909116938501939093526080810193909352600301541660a082015261279581614180565b156129305760608101515160808201515161ffff9182169116815b81811161292c5773ffffffffffffffffffffffffffffffffffffffff8681166000908152600860208181526040808420868552808352818520958b16855292825280842086855282529092208354815465ffffffffffff9182167fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008083168217855587547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000093841690921766010000000000009283900461ffff90811684029190911786556001808a0180549188018054928816838616811782558254938816179286900484168602929092179091556002808b0180549189018054928916838716811782558254938916179287900485168702929092179091556003808c0180549190990180549190981694811685178855885490871690941793859004909216909302919091179093559390945284548416909455815483169091558254821690925581541690558061292481614f0f565b9150506127b0565b5050505b73ffffffffffffffffffffffffffffffffffffffff83811660008181526007602090815260408083209487168084528184208654815465ffffffffffff9182167fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000082168117845589547fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090921617660100000000000091829004909216021780825587547fffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff9091166c010000000000000000000000009182900466ffffffffffffff1690910217815560018088018054918301805461ffff9384167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008083168217845584547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000938416909217620100009283900460ff9081168402919091179094556002808e01805491890180549289168385168117825582549387161792859004909616909302179093556003808d01805491909701805491909616908416179094558989528a547fffffffffffffffffffffffffff0000000000000000000000000000000000000016909a5581548a169091558154909816905580549096169095556004909152808220805485845282842055838352829055517fa7db278cab056bb874b7c975ab2e76c18be44e39da120a9cc6550170ec781cec9190a3505050565b612b5d613581565b612b65613620565b82612b6f8161374f565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600760209081526040808320815160c081018352815465ffffffffffff80821683526601000000000000808304821684880190815266ffffffffffffff6c010000000000000000000000009485900481168689015287518089018952600188015461ffff808216835260ff62010000928390048116848e01526060808b01949094528b51808d018d5260028c015480841682529390930416828d01526080808a0192909252600390990154891660a089015289519081018a52600554808716825294850490951699850199909952938204909316958201959095527301000000000000000000000000000000000000009094049092169383019390935251825192939192612c999190615194565b835190915065ffffffffffff1615612cbe57612cb982846000015161419b565b600083525b602083015165ffffffffffff1615612ce657612cde8284602001516141d7565b600060208401525b604083015166ffffffffffffff1615612d0f57612d07828460400151614210565b600060408401525b612d1883614180565b15612e985760608301515160808401515161ffff9182169116815b818111612e945773ffffffffffffffffffffffffffffffffffffffff8a166000908152600860209081526040808320848452825291829020825160c081018452815465ffffffffffff8082166080840190815261ffff660100000000000093849004811660a08601529084528651808801885260018601548084168252849004821681880152848701528651808801885260028601548084168252849004821681880152848801528651808801909752600390940154908116865204909116918301919091526060810191909152612e0a9061425b565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152600860209081526040808320848452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009081168255600182018054821690556002820180548216905560039091018054909116905580612e8c81614f0f565b915050612d33565b5050505b6040518060400160405280600061ffff168152602001600060ff16815250836060018190525082600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548166ffffffffffffff021916908366ffffffffffffff16021790555060608201518160010160008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548160ff021916908360ff160217905550505060808201518160020160008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548160ff021916908360ff160217905550505060a08201518160030160006101000a81548161ffff021916908361ffff16021790555090505081600560008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548166ffffffffffffff021916908366ffffffffffffff16021790555060608201518160000160136101000a81548161ffff021916908361ffff1602179055509050508673ffffffffffffffffffffffffffffffffffffffff167f828d875bb1fd38ee261c0c069e9bc63df13bf8e7e59acc2385ea66b86c83513787876040516131449291909182521515602082015260400190565b60405180910390a28461318757600061315c8761428d565b90508065ffffffffffff168265ffffffffffff161115613185578082036131838982613a00565b505b505b50505050505050565b6131e66040805160c0810182526000808252602080830182905282840182905283518085018552828152808201839052606084015283518085019094528184528301529060808201908152600060209091015290565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760209081526040808320815160c081018352815465ffffffffffff808216835266010000000000008204168286015266ffffffffffffff6c01000000000000000000000000909104168184015282518084018452600183015461ffff808216835260ff62010000928390048116848901526060850193909352855180870190965260028501548082168752919091049091169484019490945260808101929092526003015490911660a0820152816132ba611c7d565b90508061ffff168260a0015161ffff16036132da57509360009350915050565b6132e382614180565b156133c65760006132f26142ba565b905061ffff81161561335857600061330e8785606001516142df565b90505b61331a84614180565b801561333257508161ffff16816020015161ffff1611155b1561335657613341848261441f565b61334f8785606001516142df565b9050613311565b505b613366838361ffff166144de565b156133c45760008360a001518361337d91906151be565b61ffff16905080846020015165ffffffffffff1661339b91906151e1565b846040018181516133ac9190615210565b66ffffffffffffff169052505061ffff821660a08401525b505b61ffff1660a08201529360019350915050565b60006133ff6133fa836040015166ffffffffffffff166509184e72a0000290565b6144fb565b82516134189065ffffffffffff166509184e72a0000290565b611a549190614db4565b6040805160808101825260008082526020820181905291810182905260608101829052908061344f611c7d565b6040805160808101825260055465ffffffffffff8082168352660100000000000082041660208301526c01000000000000000000000000810466ffffffffffffff169282019290925261ffff7301000000000000000000000000000000000000009092048216606082015294501690505b80836060015161ffff1610156134f957606083018051906134e082615232565b61ffff169052506134f083614508565b600191506134c0565b509091565b7fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe5004547fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe5003546000917fddee74f4743e1a8cba1606768246b9b579e6a45986d386fa68f075c332fe500091141580610ad8575080600601548160050154141591505090565b3360009081526002602052604090205460ff16611a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f73594c41593a3a5f6f6e6c794772616475616c4d696e7465723a20496e73756660448201527f66696369656e742050726976696c6567657300000000000000000000000000006064820152608401610a39565b60008061362b613422565b91509150801561374b578151600580546020808601516040808801516060808a015165ffffffffffff9889167fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009097168717660100000000000099909516988902949094177fffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff166c0100000000000000000000000066ffffffffffffff9093169283027fffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff161773010000000000000000000000000000000000000061ffff90951694850217909655815194855292840195909552938201527fb968421445b12044d4cf86ecc7f3f9589111c9efab4b7561360aea60f3e832eb91016116be565b5050565b60008061375b83613190565b9150915080156139075773ffffffffffffffffffffffffffffffffffffffff831660008181526007602090815260409182902085518154878401518886015165ffffffffffff9384167fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009093168317660100000000000094909216938402919091177fffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff166c0100000000000000000000000066ffffffffffffff9092169182021784556060808a015180516001870180549289015161ffff9283167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000948516176201000060ff92831681029190911790925560808e0151805160028b018054928d0151918616929096169190911791169091021790915560a08b0151600390960180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169690911695861790558651928352948201929092529384015292917febc99566369f3a0bb7856de228673359eed87e744e506850f424863304607709910160405180910390a35b505050565b600781015460ff16610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f73594c41593a204e6f7420696e697469616c697a6564000000000000000000006044820152606401610a39565b60008060008060006139938a65ffffffffffff166145c7565b94506139a68965ffffffffffff166145c7565b93506139b98865ffffffffffff166145c7565b92506139cc8765ffffffffffff166145c7565b91506139df8665ffffffffffff166145c7565b90509550955095509550959050565b6000611a546509184e72a00083615282565b8065ffffffffffff16600003613a14575050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260076020908152604091829020825160c081018452815465ffffffffffff808216835266010000000000008204168285019081526c0100000000000000000000000090910466ffffffffffffff168286015284518086018652600184015461ffff8082168352620100009182900460ff9081168489015260608601939093528751808901909852600286015480821689529190910490911694860194909452608082019490945260039091015490911660a0820152815190918391613af6908390615194565b65ffffffffffff908116909152600580548593509091600691613b259185916601000000000000900416615194565b92506101000a81548165ffffffffffff021916908365ffffffffffff1602179055506000613b578483608001516142df565b90506000613b63611d1a565b90506000613b7084614180565b1590508080613b8a57508161ffff16836020015161ffff16105b15613bd9576000613b9e8560800151614618565b90508115613bae57606085018190525b60808501526040805180820190915265ffffffffffff8616815261ffff831660208201529250613bf7565b8483600001818151613beb9190615194565b65ffffffffffff169052505b613c09836020015161ffff168661468f565b613c18868560800151856146e0565b50505073ffffffffffffffffffffffffffffffffffffffff90921660009081526007602090815260409182902084518154838701519487015166ffffffffffffff166c01000000000000000000000000027fffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff65ffffffffffff9687166601000000000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090931696909316959095171716929092178255606084015180516001840180549284015160ff908116620100009081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000095861661ffff958616171790925560808801518051600288018054929097015190921690920291909316928216929092179190911790915560a09093015160039091018054919093167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000919091161790915550565b6000611a548265ffffffffffff166145c7565b6000611a54826145c7565b600081600003613db457506000919050565b611a548261489a565b3360009081526001602052604090205460ff16611a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f73594c41593a3a5f6f6e6c794d696e7465723a20496e73756666696369656e7460448201527f2050726976696c656765730000000000000000000000000000000000000000006064820152608401610a39565b6040517f83c603e30000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906383c603e390602401602060405180830381865afa158015613ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a909190615296565b600062093a80600054830381613f2557613f25615253565b046001019050919050565b6040517f8c2a803400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390526000918291829182917f00000000000000000000000000000000000000000000000000000000000000001690638c2a80349060440161010060405180830381865afa158015613fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ff191906152e6565b935093509350935060008060008061401b8860000151886000015188600001518860000151614909565b6040805160c08101825265ffffffffffff9586166080820190815260209e8f015161ffff90811660a08401529082528251808401845295871686529c8e01518d16858f01528d81019485528151808301835293861684529a8d01518c16838e01528a8101928352805180820182529185168252988c01518b16818d015260608a0190815273ffffffffffffffffffffffffffffffffffffffff9d909d16600090815260088c528881209c81529b8b5296909a20965180518854918b01519083167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000928316176601000000000000918b1682021789559a51805160018a018054928d015191851692841692909217908b168d0217905595518051600289018054928c015191841692891692909217908a168c021790559951805160039097018054919099015196909a169990941698909817939094169095029190911790925550505050565b60608101515160009061ffff1615614196575060015b919050565b815165ffffffffffff808316911610156141b6575060009052565b80826000018181516141c8919061533f565b65ffffffffffff169052505050565b8065ffffffffffff16826020015165ffffffffffff1610156141fe57600060208301525050565b80826020018181516141c8919061533f565b8066ffffffffffffff16826040015166ffffffffffffff16101561423957600060408301525050565b808260400181815161424b919061535e565b66ffffffffffffff169052505050565b805161426690614966565b6142738160200151614966565b6142808160400151614966565b610bde8160600151614966565b6000614298826139ee565b9050816509184e72a00065ffffffffffff831602101561419657600101919050565b6000806142c5611d1a565b61ffff16905060d08111156142db5760d0810391505b5090565b6040805180820182526000808252602080830182905273ffffffffffffffffffffffffffffffffffffffff8616825260088152838220855161ffff16835281529281209284015191929160ff1690036143635760408051808201909152815465ffffffffffff811682526601000000000000900461ffff1660208201529150611a86565b826020015160ff166001036143a65760408051808201909152600182015465ffffffffffff811682526601000000000000900461ffff1660208201529150611a86565b826020015160ff166002036143e95760408051808201909152600282015465ffffffffffff811682526601000000000000900461ffff1660208201529150611a86565b60408051808201909152600382015465ffffffffffff811682526601000000000000900461ffff16602082015291505092915050565b6000614432826020015161ffff166149ce565b825160a08501519192509060009061444a90846151be565b61ffff16905080856020015165ffffffffffff1661446891906151e1565b856040018181516144799190615210565b66ffffffffffffff1690525065ffffffffffff821660d00261449b8682614210565b82866000018181516144ad9190615194565b65ffffffffffff169052506144c286846141d7565b6144cb866149e7565b50505061ffff1660a09092019190915250565b6000818360a0015161ffff16108015610aad5750610aad83614180565b6000611a5460d083615282565b806020015165ffffffffffff16816040018181516145269190615210565b66ffffffffffffff16905250606081015160d061ffff90911610610bde57600060d0826060015161ffff1661455b919061537e565b614566906001614db4565b9050600061457382614a53565b5465ffffffffffff16905080156139075765ffffffffffff811660d00261459a8482614210565b6145a484836141d7565b81846000018181516145b69190615194565b65ffffffffffff1690525050505050565b60008166ffffffffffffff166000036145e257506000919050565b66ffffffffffffff821664e8d4a510000260006145fe8261489a565b9050614610816509184e72a000614ad3565b949350505050565b6040805180820190915260008082526020820152815161ffff166000036146425760018152919050565b6003826020015160ff16101561467757815161ffff168152602082015161466a906001615395565b60ff166020820152919050565b81516146849060016153ba565b61ffff168152919050565b600061469a83614a53565b8054909150829082906000906146b990849065ffffffffffff16615194565b92506101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860209081526040808320855161ffff1684528252822090840151909160ff90911690036147755781518154602084015161ffff166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911665ffffffffffff90921691909117178155614894565b826020015160ff166001036147db578151600182018054602085015161ffff166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911665ffffffffffff90931692909217919091179055614894565b826020015160ff16600203614841578151600282018054602085015161ffff166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911665ffffffffffff90931692909217919091179055614894565b8151600382018054602085015161ffff166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911665ffffffffffff909316929092179190911790555b50505050565b6000806148af67632086ba195c924984614f47565b90506706f05b59d3b200006148cc670de0b6b3a7640000836153d7565b11156148f757670de0b6b3a76400006148ed6706f05b59d3b2000083614db4565b610aad9190615282565b610aad670de0b6b3a764000082615282565b6000806000806149208865ffffffffffff166145c7565b93506149338765ffffffffffff166145c7565b92506149468665ffffffffffff166145c7565b91506149598565ffffffffffff166145c7565b9050945094509450949050565b805165ffffffffffff1615610bde576000614988826020015161ffff16614a53565b825181549192509082906000906149a890849065ffffffffffff1661533f565b92506101000a81548165ffffffffffff021916908365ffffffffffff1602179055505050565b600060016149dd60d084614db4565b611a54919061537e565b60808101515160608201515161ffff9081169116148015614a1d575080608001516020015160ff1681606001516020015160ff16145b15614a3e576040805180820190915260008082526020820152606082015250565b614a4b8160600151614618565b606082015250565b600080614a61600584615282565b6000818152600660205260408120919250614a7d6005866153d7565b905080600003614a8f57509392505050565b80600103614aa257506001019392505050565b80600203614ab557506002019392505050565b80600303614ac857506003019392505050565b506004019392505050565b6000818381614ae457614ae4615253565b0490506000614afc8366ffffffffffffff8416614f47565b905083811015611a86575060010192915050565b600060208083528351808285015260005b81811015614b3d57858101830151858201604001528201614b21565b81811115614b4f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461419657600080fd5b60008060408385031215614bba57600080fd5b614bc383614b83565b946020939093013593505050565b600060208284031215614be357600080fd5b610aad82614b83565b600080600060608486031215614c0157600080fd5b614c0a84614b83565b9250614c1860208501614b83565b9150604084013590509250925092565b600060208284031215614c3a57600080fd5b5035919050565b8015158114610bde57600080fd5b60008060408385031215614c6257600080fd5b614c6b83614b83565b91506020830135614c7b81614c41565b809150509250929050565b60006101008201905065ffffffffffff8084511683528060208501511660208401525066ffffffffffffff60408401511660408301526060830151614cdf6060840182805161ffff16825260209081015160ff16910152565b506080830151805161ffff1660a0840152602081015160ff1660c08401525061ffff60a08401511660e083015292915050565b60008060408385031215614d2557600080fd5b614d2e83614b83565b9150614d3c60208401614b83565b90509250929050565b600080600060608486031215614d5a57600080fd5b614d6384614b83565b9250602084013591506040840135614d7a81614c41565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614dc757614dc7614d85565b500190565b6040805190810167ffffffffffffffff81118282101715614e16577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b805165ffffffffffff8116811461419657600080fd5b600060208284031215614e4457600080fd5b6040516020810181811067ffffffffffffffff82111715614e8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052905080614e9d83614e1c565b905292915050565b600080600080600060a08688031215614ebd57600080fd5b614ec78787614e32565b9450614ed68760208801614e32565b9350614ee58760408801614e32565b9250614ef48760608801614e32565b9150614f038760808801614e32565b90509295509295909350565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f4057614f40614d85565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f7f57614f7f614d85565b500290565b600060208284031215614f9657600080fd5b5051919050565b805166ffffffffffffff8116811461419657600080fd5b805161ffff8116811461419657600080fd5b600060808284031215614fd857600080fd5b6040516080810181811067ffffffffffffffff82111715615022577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405261502e83614e1c565b815261503c60208401614e1c565b602082015261504d60408401614f9d565b604082015261505e60608401614fb4565b60608201529392505050565b60006020828403121561507c57600080fd5b610aad82614fb4565b60006040828403121561509757600080fd5b61509f614dcc565b90506150aa82614fb4565b8152602082015160ff811681146150c057600080fd5b602082015292915050565b600061010082840312156150de57600080fd5b60405160c0810181811067ffffffffffffffff82111715615128577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405261513483614e1c565b815261514260208401614e1c565b602082015261515360408401614f9d565b60408201526151658460608501615085565b60608201526151778460a08501615085565b608082015261518860e08401614fb4565b60a08201529392505050565b600065ffffffffffff8083168185168083038211156151b5576151b5614d85565b01949350505050565b600061ffff838116908316818110156151d9576151d9614d85565b039392505050565b600066ffffffffffffff8083168185168183048111821515161561520757615207614d85565b02949350505050565b600066ffffffffffffff8083168185168083038211156151b5576151b5614d85565b600061ffff80831681810361524957615249614d85565b6001019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261529157615291615253565b500490565b6000602082840312156152a857600080fd5b8151610aad81614c41565b6000604082840312156152c557600080fd5b6152cd614dcc565b90506152d882614e1c565b81526150c060208301614fb4565b60008060008061010085870312156152fd57600080fd5b61530786866152b3565b935061531686604087016152b3565b925061532586608087016152b3565b91506153348660c087016152b3565b905092959194509250565b600065ffffffffffff838116908316818110156151d9576151d9614d85565b600066ffffffffffffff838116908316818110156151d9576151d9614d85565b60008282101561539057615390614d85565b500390565b600060ff821660ff84168060ff038211156153b2576153b2614d85565b019392505050565b600061ffff8083168185168083038211156151b5576151b5614d85565b6000826153e6576153e6615253565b50069056fea26469706673582212200e17c0b44d2b3d6afde7b047fa9fc9cb604b53af9624d521fc9e8c19091df20b64736f6c634300080d0033000000000000000000000000ab865d95a574511a6c893c38a4d892275ca70570000000000000000000000000af56d16a7fe479f2fcd48ff567ff589cb2d2a0e90000000000000000000000000417f4d322d1ab133158c91765a4b8baa08fdd8a